WN_인생기록

2231 - 분해합(백준) 본문

알고리즘/문제풀이

2231 - 분해합(백준)

WhNi 2024. 6. 5. 12:13

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

 

#include <iostream>


using namespace std;

// 분해합 과정이 복잡할거 같아서 함수로 따로 설정
int Sum(int num)
{
	int sum = num;

	while (num > 0)
	{
    	// 자릿수 나머지 값 
		sum += num % 10;
        // 자릿수 빼기
		num /= 10;
	}
	return sum;
}

int main()
{
	int N;

	cin >> N;

	// 없으면 0 출력해야해서 0부터 시작
	int result = 0;

	// 각 자리수의 가장 큰 숫자9에, 가장 큰 자릿수 1,000,000 의 6 을 곱한 값으로 시작값 구하기
	int start = N - 54;

	// 시작값으로부터 입력값 까지 돌면서, 가장 작은 생성자 찾기
	for (int M = start; M < N; M++)
	{
    	// 분해합 결과값이 입력값과 같으면 
		if (Sum(M) == N)
		{
        // 가장 작은 생성자
			result = M;
			break;
		}
	}
	cout << result << "\n";

	return 0;
};

'알고리즘 > 문제풀이' 카테고리의 다른 글

11653 - 소인수분해(백준)  (1) 2024.06.08
9506-약수들의 합 (백준)  (0) 2024.06.07
2869 - 달팽이는 올라가고 싶다(백준)  (0) 2024.06.04
2292 - 벌집(백준)  (0) 2024.05.31
2903 - 중앙이동 알고리즘(백준)  (0) 2024.05.31