백준 2231번 : 분해합(python)

7414 단어 백준파이썬백준

코드

N = int(input())
if(N>100):
    t = N-100 #N보다 100 작은 숫자부터 시작
    brr = []
    for i in range(t,N):
        ii = i
        k = len(str(i))
        arr=[]
        a=0
        for j in range(k):
            a = i%10
            arr.append(a)
            i= i//10
        brr.append((sum(arr)+ii))
        if((sum(arr)+ii)==N):
            print(ii)
            break
    if(brr.count(N)==0):
        print(0)
else:
    brr = []
    for i in range(N):
        ii = i
        k = len(str(i))
        arr=[]
        a=0
        for j in range(k):
            a = i%10
            arr.append(a)
            i= i//10
        brr.append((sum(arr)+ii))
        if((sum(arr)+ii)==N):
            print(ii)
            break
    if(brr.count(N)==0):
        print(0)

코드가 다른 문제에 비해 길어졌다. 쉽게 푸는 법을 못 찾아서 길게 작성했다. ㅠ
일단 생성자의 특성상 주어진 수와 차이가 많이 나지 않는 수이기 때문에 범위는 100정도로 제한했다. 주어진 수 보다 100작은 수부터 각 자리수와 그 수의 합을 다 계산하여 주어진 수와 같은 경우가 생기면 출력하는 방식으로 코드를 짰다. 아래 쪽 else는 100이하의 수 일때 경우이다.

좋은 웹페이지 즐겨찾기