알고리즘/백준 문제풀이

[백준] 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