[C++] 백준 2231 : 분해합
#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 을 계산해야한다.
Author And Source
이 문제에 관하여([C++] 백준 2231 : 분해합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lamknh/C-백준-2231-분해합저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)