https://www.acmicpc.net/problem/2231
2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net

사고과정)
심플하다. 그냥 해당 수 + 각 자리의 숫자 더하면 된다.
주의할 점이라면 반복문에서 선언한 i를 식으로 활용하면 i 값이 변경되서 반복문이 이상해지므로
index라는 새로운 변수를 선언해주었다.
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int N;
cin >> N;
for (int i = 1; i < N; i++)
{
int index = i;
int sum = i;
while (index != 0)
{
sum = sum + index % 10;
index = index / 10;
}
if (sum == N)
{
cout << i;
return 0;
}
}
cout << 0;
return 0;
}'백준 문제풀이 > 브론즈2' 카테고리의 다른 글
| 백준 2309번 - 일곱 난쟁이 (브루트포스) (0) | 2022.01.16 |
|---|---|
| 백준 2798번 - 블랙잭 (0) | 2021.12.17 |
| 백준 2292번 - 벌집 (0) | 2021.11.30 |
| 백준 10809번 - 알파벳 찾기 (0) | 2021.11.25 |
| 백준 1173 - 운동 (0) | 2021.11.10 |