본문 바로가기

코딩테스트/BOJ

[백준/파이썬] 2231번: 분해합 (Python)

문제

https://www.acmicpc.net/problem/2231

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net

 

풀이

 - 브루트포스 알고리즘

 

1부터 시작해서 n까지의 분해합을 모두 구해서 n과 처음 같아질 때, 그 때가 가장 작은 생성자가 된다.

 

처음 문제를 풀 때, 반복문의 범위를 range(1, n)까지했더니 반례 1에서 걸려 오답처리가 됐다.

 

입력값이 한 자리 수 일때까지 생각해서 풀어야 한다.

 

코드

n = int(input())

for i in range(1,n+1):
    arr = list(map(int, str(i)))
    if sum(arr) + i == n:
        print(i)
        break
    if i == (n):
        print(0)
        break