공부/백준(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부터 주어진 수 미만까지 계속 계산해서 조건이 일치하면 출력.