Algorithm PS/BOJ
[BOJ] 2331 / 반복수열 / Python 파이썬
migrationArc
2021. 6. 7. 09:19
[BOJ] 2331 / 반복수열 / Python 파이썬
https://www.acmicpc.net/problem/2331
2331번: 반복수열
첫째 줄에 반복되는 부분을 제외했을 때, 수열에 남게 되는 수들의 개수를 출력한다.
www.acmicpc.net
풀이
제시되는 규칙으로 수열을 만들고, 반복되지 않는 수의 개수를 출력하는 문제이다.
각 수의 자리수인 0~9 까지의 수를 거듭제곱한 합으로 수열이 형성되므로, 수열은 반복되는 구간이 만들어진다.
이를 이용하여 수의 중복을 확인하고 중복 이전까지의 수열의 길이를 세어주었다.
A, P = map(int, input().split())
nums = [A]
while True:
tmp = 0
for s in str(nums[-1]):
tmp += int(s) ** P
if tmp in nums:
break
nums.append(tmp)
print(nums.index(tmp))
※ 반복 구간이 만들어지는 규칙에 대해 너무 복잡하게 생각하여 문제 난이도에 비해 어렵게 접근 하였다.