처음 코드
import sys
input = sys.stdin.readline
n = int(input())
card = []
for i in range(1, n+1):
card.append(i)
while True:
card.pop(0)
card.append(card.pop(0))
if len(card) == 1:
break
print(card[0])
Python
복사
값은 맞게 잘 푼거 같은데 자꾸 시간초과가 났다. 왜일까…
→ 리스트 자료형을 사용해서 큐를 구현하다보니 그런거였다. 양방향 삽입&출력이 가능한deque를 사용해야하는걸 고려하지 못했다.
수정 코드
from collections import deque
n = int(input())
card = deque(range(1, n+1))
while len(card) > 1:
card.popleft()
card.append(card.popleft())
print(card[0])
Python
복사
문제 해결 아이디어
큐를 활용해 인덱스를 다루는 문제는 deque자료형을 불러와서 구현하자. list는 무조건 시간초과 날듯하다.