어떤 자연수 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을 출력한다.
따라서 분해합 기준으로 봤을때 가장 작은 생성자가 될 수 있는 수는
0의 자리 수 만큼 9를 뺀 수라는 걸 알 수 있습니다.
n = int(input())
min = n
# 👇탐색의 시작값 구하기
for _ in str(n):
min -= 9
#👇만약 자연수의 범위를 벗어났다면, 시작값을 1로 지정하고 끝내기
if min <= 0:
min = 1
break
for num in range(min, n):
if num + sum([int(i) for i in str(num)]) == n:
print(num)
exit(0)
print(0)
복잡한 isPalindrome / 정규표현식 re.sub() or isalnum() / leetcode 125번 (0) | 2021.03.06 |
---|---|
백준 / 동적 계획법(DP) / 1904 / 파이썬 (0) | 2021.03.03 |
플로이드의 토끼와 거북이 알고리즘(Floyd's Tortoise & Hare Algorithm) / 증명 / leetcode 287번 / 파이썬 (5) | 2021.02.22 |
프로그래머스 / 해시 / 위장 / level 2 / 파이썬 (0) | 2021.02.21 |
프로그래머스 / 큐,스택 / 기능개발 / level 2 / 파이썬 (0) | 2021.02.06 |
댓글 영역