문제 출처: https://www.acmicpc.net/problem/2231
1. 코드
#include <iostream>
using namespace std;
int share(int n, int sum);
int main(void)
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
int sum = i;
sum = share(i, sum);
if (sum == n)
{
cout << i << endl;
return 0;
}
}
cout << 0 << endl;
return 0;
}
int share(int n, int sum)
{
sum += n % 10;
n /= 10;
if (n > 0)
return share(n, sum);
else
return sum;
}
2. 풀이 방식
1부터 n까지의 수들 중에서 분해합의 결과로 n이 나오는 생성자를 구하는 것이다. 다행이 입력의 수 범위도 작아서 어떠한 쉽게 해결할 수 있다.
다만 풀 때 10의 분해합은 5 + 5로 처리가 된다. 이전에 제출했던 코드가 있는데 해당 코드는 10의 생성자는 존재하지 않다고 나오게 했었는데 재채점된 이후로 10의 생성자가 5가 되도록 바뀐 것 같다.
'컴퓨터 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 18108번: 1998년생인 내가 태국에서는 2541년생?! [Java] (1) | 2022.10.05 |
---|---|
백준 알고리즘 10926번: ??! [Java] (0) | 2022.10.02 |
백준 알고리즘 21360번: Biosalong [C++] (0) | 2021.06.27 |
백준 알고리즘 16466번: 콘서트 [C++] (0) | 2021.06.27 |
백준 알고리즘 2740번: 행렬 곱셈 [C++] (0) | 2021.05.26 |