백준 문제풀이/브론즈2

백준 2231번 - 분해합

void_melody 2021. 12. 17. 03:45

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;
}