셀프 넘버
2019. 12. 31. 22:12ㆍ개발노트
문제 해결을 위해 집합을 사용했습니다.
파이썬에서 집합은 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를 사용했습니다.