백준(Python) 풀이/수학

백준(Python) 2331번 반복수열 풀이

개발윗미 2021. 10. 19. 10:37

Python으로 구현한 2331번 반복수열 문제 풀이입니다.

 

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

 

2331번: 반복수열

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

www.acmicpc.net


import sys

a, p = map(int, sys.stdin.readline().split())
data = [a]

while True :
  value = 0
  for i in str(data[-1]) :
    value += int(i) ** p

  if value in data :
    break

  data.append(value)

print(data.index(value))

 

반복문과 리스트를 이용하여 D[n-1]의 각 자리의 숫자를 p번 곱한 수들의 합을 구한다.

 

조건문을 통해 D[n]이 리스트에 이미 존재할 경우 반복문을 빠져나온 뒤 그 값이 있는 인덱스를 출력한다.