넥슨입사문제 1번 풀이
#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초나 걸림 ;
migrated from https://boongubbang.tistory.com/7