Algorithm/C++ - BOJ

BOJ/백준 - 2231 분해합 C++

ㅇㅇ잉 2021. 1. 30. 21:22

부르트 포스의 문제이다.

모든 경우의 수를 탐색해보면 되는데, 이때 생성자는 N보다 클 수 없어서 1부터 N까지 반복하면서 생성자를 찾아준다.

가장 작은 생성자를 출력하라고 하였으므로, 오름차순으로 생성자를 찾아나가기때문에 가장 처음 찾은 생성자가 답이 될 것이다.

만약 찾지 못한다면 result가 초기화되지 못하여 그대로 0이 출력될 것이다.

#include <iostream>
using namespace std;

int main() {
	int N;
	int result = 0;
	cin >> N;

	for (int i = 1; i < N; i++) {
		int sum = 0;
		int num = i;
		while (num!= 0) { //자릿수마다 더하기
			sum += num % 10;
			num /= 10;
		}
		if (sum + i == N) { //조건
			result = i;
			break;
		}
	}

	cout << result;

	return 0;
}