저는 def 를 재귀함수로 놓고 풀었습니다.
제가 정의한 _self(i) 라는 함수는 i 라는 변수가 주어졌을때
i 의 d(i) 를 구하는 함수입니다.
재귀함수의 특성을 이용해서 d(i) 가 다시 i 로 바뀌고, 그 i 값이 다시 _self(i) 라는 함수에 들어가서 i가 10001 을 넘지 않을 때까지 반복하는거지요.
이러한 모든 결과를 a 라는 리스트에 담습니다.
이렇게 정의한 _self(i) 라는 함수를
for i in range(1,10001) :
_self(i) 에 넣으면
모든 경우의 수의 값들이 a 라는 리스트에 담기게 되는데
이 리스트 안에는 중복된 값이 있을수도 있으므로 set 을 활용해 중복된 값을 제거한 후
다시 list 로 만든 뒤 sort 를 활용해서 오름차순으로 정렬해줍니다.
그 후 1부터 10000 이 담겨있는 b라는 리스트와 a 리스트를 비교해서
b리스트의 원소 들 중 a 리스트에 담겨있지 않은 수들이 셀프 넘버가 되는 것입니다.
tlawotjd123 3년 전
문제를 풀었는데 생각해보니 함수 문제더군요,,,,, 그ㅜ래서 함수형식으로 만들려고 해봤는데 def넣고 이것저것해봤는데 답이안나옵니다 ㅠㅠ
저 식에서 def를 어떻게정의해야 답이 나올까요 ??고수님들 도와주십쇼ㅠㅠ