# 1부터 10000까지 배열을 만들어 두고
# for 문을 이용해 1부터 10000까지 돌면서
# hap이 있으면 result에서 지우는 방식으로 푼 방식
# 여기서 잠시 혼동이 왔던 부분 정리하자면
# del은 인덱스를 지우는 방식
# remove는 값을 지우는 방식
result = [i for i in range(1, 10001)]
for i in range(1, 10001):
hap = i + sum(list(map(int,str(i))))
if hap in result: result.remove(hap)
for i in result: print(i)
# 처음 접근한 방식
# 1부터 10000까지 돌면서 1부터 해당 숫자 아래의 모든 값을 조사하며
# 해당 숫자의 값이 되는지 확인 하는 코드
# 의미 없는 탐색을 계속 하는 단점으로 많은 시간이 소요됨.
stack = []
for i in range(1, 10001):
flag = True
for j in range(i-1, 0, -1):
hap = j
while j != 0:
hap += j%10
j = j//10
if hap == i:
flag = False
break
if flag == True:
stack.append(i)
for i in stack:
print(i)