#include <iostream>
int N, tmp, sum = 0;
int main(int argc, char **argv){ // 부르트포스 알고리즘
scanf("%d",&N);
for(int i=1; i<=N; i++){
tmp = i;
sum += i; // 2의 생성자는 1 (1+1)
while(tmp > 0){
sum += tmp % 10;
tmp /= 10;
if(tmp == 0 && sum == N){
printf("%d", i);
return 0;
}
}
sum = 0;
}
printf("0");
return 0;
}
총 4번의 시도 끝에 맞춘 문제.
풀리지 않을 때는 코드를 보기보다 반례를 생각해보고, 정말 모르겠으면 질문 검색란에 있는 질문에서 반례를 찾아보고 입력을 해보는 편이다.
2의 생성자는 1이다. 1 + 1 = 2
생성자가 없으면 0을 출력시킨다.
86의 생성자는 78이 아니라 0이다. 78 + 8 = 86 이 되어 값을 78로 출력하였지만 78 + 8 + 7 을 계산해야한다.