알고리즘/Solved_Bronze
[Python Bronze II 2231] 분해합
Hexs
2023. 3. 23. 22:20
반응형
https://www.acmicpc.net/problem/2231
2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net
숫자 N을 입력받습니다. 이때 N에 대한 가장 작은 생성자를 구하는 문제입니다.
예를 들어서 숫자 256을 입력받았을 때 256의 가장 작은 생성자는 245입니다. ( 245 + 2 + 4 + 5 = 256 )
이런 식으로 입력받은 해당 숫자 보다 작은 수중에서 가장 작은 생성자를 구하는 문제입니다.
[ 2 ~ 5 ] 생성자의 최솟값을 정해주기 위한 if 문입니다. 생성자가 3자리 일 경우 모든 자리의 수가 999 일 경우 가장 큰 수가 나오게 됩니다. 9+9+9 = 27 그러므로 입력받은 숫자에 입력받은 숫자의 자릿수 * 9를 해주게 되면 해당 숫자를 만들 수 있는 최솟값이 나오게 됩니다. ( 입력받은 수가 2자리나 1자리일 경우는 예외. 10일 경우 -18을 해주게 되면. 음수이기 때문에. )
[ 8 ~ 17 ] 위에서 정한 최솟값부터 생성자까지 숫자 하나하나 검사하는 방식입니다.
작은 값 부터 검사하기 때문에 생성자를 찾게 되면 바로 탈출 후 출력. 찾지 못한다면 0을 출력합니다.
반응형