반응형
분해합
티어 : Bronze 2
시간 제한 : 2 초
메모리 제한 : 192 MB
알고리즘 분류 : 브루트포스 알고리즘
문제
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다.
자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
출력
첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다.
예제 입출력
Code
N = int(input()) # 분해합
# 분해합부터 작아지면서 생성자와 생성자의 각 자리수의 합이 분해합을 만족하는지 확인
min_ = 0
for i in range(N-1, -1, -1):
temp = str(i) # i를 str형으로 변경
nums = []
# 숫자의 각 자리수를 리스트 형태로 저장
for j in range(len(temp)):
nums.append(int(temp[j]))
# 숫자의 각 자리수와 해당 숫자를 더했을 때 N이 나온다면 최솟값 갱신
if sum(nums) + i == N:
min_ = i
print(min_)
메모리: 30864 KB
시간: 2444 ms
반응형
'백준 > Python' 카테고리의 다른 글
[백준 2557] Hello World Python (0) | 2022.04.06 |
---|---|
[백준 2438] 별 찍기 - 1 Python (0) | 2022.04.06 |
[백준 2292] 벌집 Python (0) | 2022.04.06 |
[백준 14889] 스타트와 링크 Python (0) | 2022.04.06 |
[백준 14501] 퇴사 Python (0) | 2022.04.06 |