-
문제 해결을 위해 집합을 사용했습니다.
파이썬에서 집합은 set을 사용해서 만들 수 있습니다.
#셀프넘버는 생성자가 없는 숫자를 말한다. #셀프넘버의 예로는 1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97.... #71 이면 71+ 7+ 1 set1 = set([]) def solve(i): ans = 0 ans += i for j in str(i): ans += int(j) #ans들 집합에 넣고 1부터 10000의 수와 교집합을 제외하면 나머지만 남는다. #print(ans) set1.add(ans) for i in range(1, 10001): solve(i) set2 = set(range(1, 10001)) set3 = set2 - set1 set3 = sorted(set3) for s in set3: print(s)
함수를 이용해서 셀프 넘버 이외의 값들을 set1집합에 넣어줍니다.
1부터 10000까지 숫자가 들어있는 set2에서 set1을 빼서 셀프 넘버를 구합니다.
작은 수 부터 출력되게 하기 위해 sorted를 사용했습니다.