풀이


1부터 10,000 까지의 정수 중 셀프 넘버를 찾는 문제다.

1부터 10,000 까지의 정수를 set 자료형에 담은 뒤 셀프 넘버가 아닌 숫자들을 remove 에 담아 차집합을 구하면된다.

오름차순으로 출력해야하기 때문에 정렬 후 for문으로 출력하면된다.

소스코드


nums = set(range(1, 10000))
remove = set()
 
for num in nums :
    for n in str(num):
        num += int(n)
    remove.add(num)
 
self_nums = nums - remove
for self_num in sorted(self_nums):
    print(self_num)

References