셀프 넘버

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를 사용했습니다.