백준 2331 반복수열 파이썬
백준 2331 반복수열 풀이
접근방식
- 처음 입력받은 a를 리스트에 저장
- 이후 리스트의 -1번째 원소를 계속 참조해서 그 자릿수만큼 p번 곱해서 더해주기
- 만약 중복되는 원소가 있다면 while문을 break하기
- index 함수를 이용하여 중복되는 원소의 인덱스를 출력하기
- 4번에서 출력한 값이 결국엔 길이와 같다,
import sys
input = lambda: sys.stdin.readline().rstrip()
a, p = map(int, input().split())
series = [a]
while True:
d = 0
for i in str(series[-1]):
d += int(i) ** p
if d in series:
break
series.append(d)
print(series.index(d))
실버 4레벨의 구현 문제였는데
이 문제에서 핵심은 리스트의 마지막 원소를 계속 참조할 수 있게 하고,
index 함수를 이용해서 간편하게 길이를 구하도록 하는 것이라고 생각합니다.
알고리즘도 모든 것과 마찬가지로 꾸준한 연습과 이해를 바탕으로 실력이 향상합니다.
Just do it & Keep steady
댓글남기기