공부/백준(C++) - 2022~

백준 2231번: 분해합 [C++]

상연 2022. 1. 25. 20:15

목차

https://www.acmicpc.net/problem/2231

 

2231번: 분해합

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

www.acmicpc.net

코드

#include <iostream>
using namespace std;

int decompose(int n)
{
	int de_num = n;
	while(n != 0)
	{
		de_num += n%10;
		n /= 10;
	}
	return de_num;
}

int main()
{
	int n, answer = 0;;
	cin >> n;
	
	for(int i=1; i<n; i++)
	{
		if(decompose(i) == n)
		{
			answer = i;
			break;
		}
	}
	cout << answer;
	
}

설명

문제를 그대로 따라가면 풀 수있는 문제이다.

가장 작은 생성자를 구해내면 되는것이기 때문에 1부터 주어진 수 미만까지 계속 계산해서 조건이 일치하면 출력.