반응형
● 문제 접근 과정
- 변수 N에 주어진 자연수를 입력받습니다.
- for 루프를 통해 1부터 N까지의 수를 확인합니다.
- 각 수에 대해 각 자릿수의 합을 구하여 sum 변수에 저장합니다. 이를 위해 while 루프를 사용하여 수를 10으로 나누어가면서 각 자릿수를 더합니다.
- 해당 수와 각 자릿수의 합을 더한 값이 N과 같은지 확인합니다. 만약 같다면, 해당 수는 N의 생성자가 될 수 있습니다.
- 생성자가 되는 가장 작은 수를 찾았으면 result 변수에 저장하고 루프를 종료합니다.
- result를 출력합니다.
● 구현
#include <iostream>
using namespace std;
int main() {
int N;
int result = 0;
cin >> N;
for (int i = 1; i < N; i++) {
int sum = 0;
int num = i;
while (num != 0) { //자릿수마다 더하기
sum += num % 10;
cout << sum << endl;
num /= 10;
cout << num << endl;
}
if (sum + i == N) { //조건
result = i;
break;
}
}
cout << result;
return 0;
}
https://www.acmicpc.net/problem/2231
반응형