
https://www.acmicpc.net/problem/2231
2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net
애초에 문제 분류가 bruteforce 있긴 하지만 분해합이라는 것 자체가 숫자의 자리수에 따라서 결정되고 이를 원래의 수에 다시 생성자 수에 더해야 하기에 N수 직전까지 하나씩 탐색하는 방법 밖에 없다. 따라서 1부터 N-1까지 탐색을 하고 탐색하는 수 마다 분해합을 구하고 더한다. 더해진 수가 N과 일치하면 결과로 내놓고 만약 결과가 없다면 0을 출력한다. 이를 코드로 나타내면 다음과 같다
N = int(input())
result = []
for i in range(1,N):
num = i
decomposed_sum = 0
while i > 0:
decomposed_sum += i%10
i //= 10
if (num + decomposed_sum) == N:
result.append(num)
if result:
print(min(result))
else:
print(0)
'알고리즘_파이썬' 카테고리의 다른 글
| 백준 9655 돌 게임 (0) | 2024.01.31 |
|---|---|
| 백준 2749 피보나치 수3 (1) | 2024.01.31 |
| 백준 1655 가운데를 말해요 (1) | 2024.01.24 |
| 백준 1874 스택 수열 (1) | 2024.01.23 |
| 백준 10876 중복 빼고 정렬하기 (0) | 2024.01.20 |