알고리즘/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을 출력합니다.

 

반응형