티스토리 뷰

#include <stdio.h>
#include <time.h>

int main(void)
{
	int i, j;
	int conf;
	int chk=1;
	int total=0;

	for(i=1; i<5000; i++)
	{
		if(i<10)
		{
			chk=0;
			for(j=0; j<10; j++)
			{
				conf=(j%10) + j;
				if(conf==i)
				{
					chk=1;
					break;
				}
			}
		}
		if(chk==0)
		{
			printf("self-number:%d\n", i);
			total+=i;
			chk=1;
		}

		else if(i>=10 && i<100)
		{
			chk=0;
			for(j=0; j<100; j++)
			{
				conf=(j/10) + (j%10) + j;
				if(conf==i)
				{
					chk=1;
					break;
				}
			}
		}
		if(chk==0)
		{
			printf("self-number:%d\n", i);
			total+=i;
			chk=1;
		}

		else if(i>=100 && i<1000)
		{
			chk=0;
			for(j=0; j<1000; j++)
			{
				conf=(j/100) + ((j/10)%10) + (j%10) + j;
				if(conf==i)
				{
					chk=1;
					break;
				}
			}
		}
		if(chk==0)
		{
			printf("self-number:%d\n", i);
			total+=i;
			chk=1;
		}
		else if(i>=1000 && i<5000)
		{
			chk=0;
			for(j=0; j<5000; j++)
			{
				conf=(j/1000) + ((j/100)%10) + ((j/10)%10) + (j%10) + j;
				if(conf==i)
				{
					chk=1;
					break;
				}
			}
		}
		if(chk==0)
		{
			printf("self-number:%d\n", i);
			total+=i;
			chk=1;
		}
	}

	printf("TOTAL:%d\n수행시간:%dms\n", total, clock());

	return 0;
}
너무 구림 매우 느림
나중에 시간많을때 다시 풀어봐야 할듯
// 각 자리수의 합을 구하는 다른 방법..
int toa(int x)
{
 int len;
 int i;
 int total=0;
 char buffer[64];
 itoa(x, buffer, 10);
 len=strlen(buffer);
 for(i=0; i<len; i++)
  total+=buffer[i]-48;
 return total;
}
이렇게 만들어 봣는데 .. 이걸쓰면 1초만에 답이 나오던게 6초나 걸림 ;

'Programing > C' 카테고리의 다른 글

C - 방향키의 아스키 코드값 얻기.  (0) 2009.01.20
넥슨입사문제 1번 풀이..  (0) 2009.01.19
C- 파일 생성기  (0) 2009.01.19
C - 하지메 코드  (0) 2009.01.19
댓글
댓글쓰기 폼