백준 2231 분해합 (파이썬)


2231 분해합


접근 방식

  • 이 문제는 브루트포스 단계에 있는 문제이다.
  • 브루트포스란 처음부터 끝까지 다 하나하나 확인하는 방식, 즉 전체 탐색방법을 말한다.
  • 따라서 1부터 입력 값까지의 모든 숫자의 분해합 계산을 하여 계산 값이 입력 값과 동일한지 체크한다.
  • 끝까지 계산하였으나 생성자가 없을 경우는 0을 출력한다.
  • 생성자가 여러 개일 경우에는 가장 작은 값을 구하는 것이므로 처음 발견된 생성자를 출력하고 break한다. (어차피 숫자는 계속 커질 뿐이니 더 작은 생성자가 나오지않는다.)

파이썬 코드

n = int(input())
result = 0
for i in range(1,n+1):
    num = list(map(int,str(i)))
    result = i + sum(num)
    if result == n:
        print(i)
        #처음 발견되는 생성자가 가장 작은 생성자. 여기서 브레이크 가능
        break
    #끝까지 다 체크했으나 생성자가 없는 경우
    if i == n:
        print(0)





© 2020.09. by 다로

Powered by theorydb