https://www.acmicpc.net/problem/2231
풀이
문제에 따르면 우리는 생성자를 이용하여 분해합을 나타낼 수 있습니다.
예를들어 생성자 123이 주어진다면 우린 129(123 + 1 + 2 + 3)라는 분해합을 얻을 수 있습니다.
생성자는 분해합보다 항상 같거나 작습니다. for문을 이용해서 0부터 분해합까지 모든 수를 생성자로 취급하여 분해합을 구해봅니다. 찾고자하는 분해합을 찾게되면 우린 생성자를 찾을 수 있습니다.
이를 직접 구현해주는 것이 문제입니다.
# 2231번 분해합
decomposition = int(input())
# 0에서부터 분해합(N)까지의 모든 정수의 분해합을 출력하여
# N과 같은 숫자가 나오면 생성자를 찾게 됩니다.
for i in range(decomposition):
temp = list(map(int, str(i)))
total = i + sum(temp)
if total == decomposition:
print(i)
exit(0)
print(0)
출력결과
'백준 > 구현' 카테고리의 다른 글
[백준] 5430번 AC - 파이썬 (0) | 2022.08.16 |
---|---|
[백준] 7568번 덩치 - 파이썬 (0) | 2022.08.16 |
[백준] 15829번 Hashing - 파이썬 (0) | 2022.08.16 |
[백준] 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰 - 파이썬 (0) | 2022.08.16 |
[백준] 11050번 이항 계수 1 - 파이썬 (0) | 2022.07.18 |