1-n까지의 카드가 오름차순으로 있다.
앞에서부터 하나를 빼고 하나를 마지막에 넣고를 반복했을 때, 마지막으로 남아있는 카드를 출력하는 문제이다.
import sys
import _collections
n = int(sys.stdin.readline())
q = _collections.deque([i for i in range(1,n+1)])
last = 0
while q:
last = q.popleft()
if q:
last = q.popleft()
q.append(last)
print(last)
queue를 활용하여 문제를 풀었다.
큐가 비어있지않으면 하나를 뽑고, 그래도 비어있지않다면 하나를 더 뽑아서 마지막에 넣는 방식으로 구현을 했다.
뽑을 때마다 last를 갱신하여 마지막에 last를 출력했다.