내가 생각한 방법은 배열에 1부터 10000까지의 숫자를 넣고, 생성자를 하나씩 늘려가면서 생성자가 있는 숫자들을 리스트에서 제거하는 것이였다.
result = []
for i in range(10000):
result.append(i)
# a가 9972이면 9999
for i in range(9973):
sum = 0
if i < 10:
sum = i + i
result.remove(sum)
elif 9 < i < 100:
sum = i + (i//10)%10 + (i % 10)
result.remove(sum)
elif 99<i<1000:
sum = i + (i//100) % 10 + (i//10) % 10 + (i % 10)
if sum in result:
result.remove(sum)
else: //배열에 이미 다른 생성자가 값을 제거하였을 때
continue
elif 999<i<10000:
sum = i + (i//1000)%10 + (i//100)%10 + (i//10) % 10 + (i % 10)
if sum in result:
result.remove(sum)
else: //배열에 이미 다른 생성자가 값을 제거하였을 때
continue
for i in result:
print(i)
numbers = list(range(1, 10001))
remove_list = [] # 이후에 삭제할 숫자 list
for num in numbers :
for n in str(num):
num += int(n) # 생성자가 있는 숫자
if num <= 10000: # 10,000보다 작거나 같을 때만,
remove_list.append(num) # append: 리스트에 요소를 추가할 때
for remove_num in set(remove_list) : # set 으로 중복값 제거
numbers.remove(remove_num)
for self_num in numbers : # 생성자가 있는 숫자를 삭제한 리스트
print(self_num)