문제접근
•
0부터 시작하여 분해합을 계속 구하여 생성자를 구한다
놓쳤던 부분
else if (tmp > n)
	print(0);
C
복사
•
0부터 구하다가 분해합이 n을 넘어가게 되면 더 이상 계산을 할 필요 없다고 생각했는데 그 이후에도 생성자가 존재할 수 있기 때문에 계속 계산을 해줘야함
•
다 계산하는 것이 너무 비효율적인 거 같음. 뭔가 시간을 줄일 수 있지 않을까?
코드
2020 KB
12 ms
#include <iostream>
int n;
void input_setting()
{
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
}
void input()
{
    std::cin >> n;
}
int get_decomposition_sum(int n)
{
    int sum = n;
    while (1)
    {
        sum += n % 10;
        if (n < 10)
            break ;
        n /= 10;
    }
    return (sum);
}
void print(int answer)
{
    std::cout << answer;
}
void solution()
{
    int tmp;
    for (int i = 0; i <= 1000000; i++)
    {
        tmp = get_decomposition_sum(i); 
        if (tmp == n)
        {
            print(i);
            return ;
        }
        else if (tmp > n)
        {
            continue ;
        }
    }
    print(0);
}
int main(void)
{
    input_setting();
    input();
    solution();
    return (0);
}
C++
복사



