본문 바로가기
Problem Solving/Python

[백준]BOJ 2331 - 반복 수열 - Python/구현

by jw_choi 2022. 11. 7.

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

 

2331번: 반복수열

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

www.acmicpc.net

<문제>

<풀이>

1. 수열을 만드는 반복문을 만든다.

2. 도중에 기존에 있는 원소와 같은 원소가 나오면 반복문을 종료한다.

3. 처음으로 나온 같은 원소의 인덱스를 출력한다. (인덱스는 0부터 시작이기에 더하고 뺄 필요가 없다.)

 

너무 간단하게 풀렸는데 시간복잡도가 별로 좋아보이진 않는다. 더 좋은 방법이 있을듯 싶다.

 

<코드>

a, p = map(int, input().split())
seq = [a]

while True:
    element = 0
    for i in str(seq[-1]):
        element += (int(i) ** p)
    if element in seq:
        break
    seq.append(element)

print(seq.index(element))

댓글