Hwan'Story › @kim-hwan

넥슨입사문제 1번 풀이

· (수정 ) · 조회 86

#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

관련 게시글