큐를 사용해 주어진 작업을 반복하는 문제. 리스트보다 디큐를 사용하자.
from collections import deque
n = int(input())
queue = deque()
for i in range(1, n+1):
queue.append(i)
# O(N)
while len(queue) != 1:
# 카드 1장만 남을 때까지 반복.
queue.popleft()
# 가장 앞의 카드를 버린다.
first = queue.popleft()
queue.append(first)
# 맨 위의 장을 맨 아래로 이동한다.
print(queue.popleft())