반응형

분해합

티어 : 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

+ Recent posts