tlawotjd123   3년 전

문제를 풀었는데 생각해보니 함수 문제더군요,,,,, 그ㅜ래서 함수형식으로 만들려고 해봤는데 def넣고 이것저것해봤는데 답이안나옵니다 ㅠㅠ

저 식에서 def를 어떻게정의해야 답이 나올까요 ??고수님들 도와주십쇼ㅠㅠ

keenshark   3년 전

저는 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 리스트에 담겨있지 않은 수들이 셀프 넘버가 되는 것입니다. 



댓글을 작성하려면 로그인해야 합니다.