솔직히 dfs쓴지 잘 모르겠다...나중에 다시 알아봐야겠다.
이거 풀면서도 좀 어려웠다.. 두가지의 풀이 방법을 봤었는데 이 방법이 젤 쉬운거 같아서 이 풀이로 풀어보았다.
젤 처음에 57, 2 이렇게 주어져서 입력을 받아준다.
57이라는 수를 리스트로 담아주기 위해서 num= [A]을 해준다. 즉 num이라는 리스트에 57이라는 숫자가 담겨 num= [57]이 된다.
57이면 5**2 + 7**2를 해서 값은 74가 된다. 이를 계속 반복하게 되고 다시 74에 계산을 해줘야하니깐 num 리스트에 74도 append해준다. (이건 반복되지 않을때만 append 해줘야함)
즉 num= [57,74,65,61,37,58,89,145,42,20,4,16...(37부터는 다시 반복)] 담기게 된다.
조건이 만약 반복되는 숫자가 나온다면 당장 멈추면 된다!
그 다음 출력값은 반복되는 숫자의 인덱스가 된다. 그 전 인덱스까지 len을 써서 값을 셀려고 했는데 다시 생각해보니 그냥 그 인덱스 값이 4이므로 그냥 인덱스 값을 출력해주면 된다.
A, P= map(int,input().split())
num=[A]
while True:
sum=0
for i in str(num[-1]):
sum += int(i)**P
if sum in num:
break
num.append(sum)
print(num.index(sum))