백준 큐 11866번

안녕하세요, GDSC 웹 멤버 오정인입니다.
큐의 다섯번째 문제를 풀어봤습니다~

deque

덱(deque)은 스택과 큐를 합친 자료구조로, 빠른 속도로 시작점의 값을 넣고 빼거나, 끝 점의 값을 넣고 뺄 수 있도록 해줍니다. 일반적인 리스트의 경우 O(n)이지만, 덱을 이용할 경우 O(1)이라고 합니다.

풀이

요세푸스 문제 그대로 풀었습니다!

from collections import deque
n,k=map(int,input().split())
lst=deque([i+1 for i in range(n)])
ans=[]
cnt=1
while(lst):
    if cnt!=k: //카운터가 k와 일치하지 않을경우
        lst.append(lst.popleft()) // 뒤로 보내줌
        cnt+=1
    else: //일치할경우
        ans.append(lst.popleft()) //ans 리스트로 보내줌
        cnt=1 //카운터 초기화

print("<"+', '.join(map(str,ans))+">")


파이썬의 deque를 이용하면 간단하게 풀 수 있는 문제인 것 같습니다.