백준 2331 반복수열 파이썬

최대 1 분 소요

백준 2331 반복수열 풀이

접근방식

  1. 처음 입력받은 a를 리스트에 저장
  2. 이후 리스트의 -1번째 원소를 계속 참조해서 그 자릿수만큼 p번 곱해서 더해주기
  3. 만약 중복되는 원소가 있다면 while문을 break하기
  4. index 함수를 이용하여 중복되는 원소의 인덱스를 출력하기
  5. 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

댓글남기기