본문 바로가기

백준 문제 풀이 및 피드백

2023.01.15 반복수열 백준(Python)

https://www.acmicpc.net/problem/2331

 

2331번: 반복수열

첫째 줄에 반복되는 부분을 제외했을 때, 수열에 남게 되는 수들의 개수를 출력한다.

www.acmicpc.net

 

import sys
input = sys.stdin.readline

def dfs(num,visited=[]):
    if num in visited:
        return visited[:visited.index(num)]
    visited.append(num)
    return dfs(seq(num),visited)

def seq(a):
    return sum(map(lambda x: int(x) ** k,list(str(a))))
n , k = map(int,input().split())

print(len(dfs(n)))

seq로 다음 수열의 값을 반환하는 함수와 재귀를 통해서 전에 있었던 곳을 간다면 멈추고 그 전까지를 반환하는 함수를 만들었다.