알고리즘/백준 문제풀이
[백준] 2231 분해합 파이썬 풀이 (브루트포스)
자바칩 프라푸치노
2021. 6. 24. 13:52
문제
- 자연수 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