생각보다 어려운 문제였다. 기존의 다른 문제들과 달리 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 리스트에 들어있으면 셀프 넘버가 아니므로 통과시켜주고, 셀프넘버라면 바로 출력해주는 방식으로 진행한다.
'알고리즘 테스트 > 백준 문제풀이 및 해설' 카테고리의 다른 글
<백준 문제풀이: 2941번> 파이썬 - 크로아티아 알파벳 (0) | 2020.11.19 |
---|---|
<백준 문제풀이: 1065번> 파이썬 - 한수 (0) | 2020.11.18 |
<백준 문제풀이: 5622번> 파이썬 - 다이얼 (0) | 2020.11.17 |
<백준 문제풀이: 2908번> 파이썬 - 상수 (0) | 2020.11.16 |
<백준 문제풀이: 1152번> 파이썬 - 단어의 개수 (0) | 2020.11.15 |