출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

생각보다 어려운 문제였다. 기존의 다른 문제들과 달리 input을 하는 방식이 없이 그저 함수로 정의를 하기만 하면 끝나는 문제라 조금 어리바리?했던 것 같다:

def d(n):
    number = int(n)
    for i in list(str(n)):
        number += int(i)
    return number

non_self_numbers = []
for i in range(1, 10001):
    num = d(i)
    non_self_numbers.append(num)
    
for j in range(1, 10001):
    if j in non_self_numbers:
        pass
    else:
        print(j)

우선 함수를 정의시켜준다. n이라는 숫자를 받아들이고, 이를 number라는 변수에 저장시켜준다. 그리고 n의 각 자릿수를 number에 더해주고, 이를 return 시켜준다.

non_self_numbers 라는 리스트를 정의해주고, 이 리스트에 1부터 10000까지의 숫자를 d(i)를 돌려서 해당되는 숫자들을 추가시켜준다.

마지막으로 j를 1 부터 10000까지의 숫자들로 정의했을 때, j 가 이 non_self_numbers 리스트에 들어있으면 셀프 넘버가 아니므로 통과시켜주고, 셀프넘버라면 바로 출력해주는 방식으로 진행한다.