백준 2331. 반복수열 - 문제풀이 (pop) (Python/파이썬)
🔎 2331번. 문제 보기
https://www.acmicpc.net/problem/2331
💡 문제 풀기 전
생각보다 구조가 간단하게 떠올랐다.
'규칙에 맞게 수를 추가해주면서, 중복되는 수가 나오면 바로 stop하고 계산해줘야겠다!'
📋 코드 보기
from sys import stdin
A, P = map(int, stdin.readline().split())
check = [A]
while True:
new = 0
for i in (str(check[-1])):
new += int(i) ** P
if new in check:
while True:
if new == check.pop():
print(len(check))
exit()
else:
check.append(new)
🥕 코드 풀이 및 관련 개념
규칙에 따라 수를 계산해줄 때마다 check라는 리스트에 새로운 수를 추가해준다.
for문은 새로운 수(new)를 계산해주는 구간
그 다음에 새로운 수(new)가 check라는 리스트 안에 있으면,
예를 들어 [ 1, 5, 3, 4 ] 그리고 그 다음에 추가하려고 했던 수가 5일 때
check 리스트 내에서 5까지 pop을 해준다.
그리고 남은 check 리스트의 길이를 출력해주면 된다.
Author And Source
이 문제에 관하여(백준 2331. 반복수열 - 문제풀이 (pop) (Python/파이썬)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dding_ji/baekjoon-2331저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)