코드
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이하의 수 일때 경우이다.