문제
- 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합이다.
- 어떤 자연수 M의 분해합이 N인 경우 M을 N을 생성자라고 한다.
- 자연수 N이 주어졌을때 N의 가장 작은 생성자를 구해라
문제풀이
- 주어진 숫자까지 1부터 분해합을 구한다.
- 중간에 분해합이 주어진 숫자와 같아지는 순간 break하고 출력한다.
- 중간에 break될 경우 check를 False에서 True로 바꾼다
- check가 False로 끝까지 남았을 경우 주어진 숫자의 생성자가 없다는 뜻이다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
num = int(input())
check = False
for i in range(1,num+1):
generated = 0
splits= []
for j in str(i):
splits.append(int(j))
generated = i + sum(splits)
if generated == num :
check = True
print(i)
break
if not check:
print(0)
|
cs |
728x90
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[백준] 1541 잃어버린 괄호 파이썬 풀이 (그리디) (0) | 2021.06.24 |
---|---|
[백준] 1002 피보나치 함수 파이썬 풀이 (동적계획법) (0) | 2021.06.24 |
[백준] 2798 블랙잭 파이썬 풀이 (브루트포스) (0) | 2021.06.24 |
[백준] 1002 터렛 파이썬 풀이 (기본 수학) (0) | 2021.06.24 |
[백준] 2579 계단 오르기 파이썬 풀이 (동적 계획법) (0) | 2021.06.24 |