[BOJ] 2231 : 분해합
Question
Solution
- 주어진 숫자 N을 for문으로 1부터 탐색을 한다. (최솟값 찾기)
- 탐색 식은 임의의 숫자 M이라고 할때, M + M의 각 자리수 이다
- 이를 더한 값이 N과 같으면 M을 출력, 없으면 0을 출력한다.
Cord
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int answer = 0;
// 입력
int num;
cin >> num;
// 분해 합 찾기
for (int idx = 1; idx <= num; idx++)
{
int temp = idx;
int sumUnits = 0;
// temp의 각 자리수 도출
while (temp != 0)
{
sumUnits += temp % 10;
temp /= 10;
}
// temp와 temp의 자리수 합
int sum = idx + sumUnits;
// 합이 같은경우
if (sum == num)
{
answer = idx;
break;
}
}
// 출력
cout << answer;
return 0;
}