[백준/Python] 11866번 : 요세푸스 문제 0

문제

https://www.acmicpc.net/problem/11866

  • 큐를 활용하는 문제

풀이

Python의 deque를 활용하여 양방향 큐를 사용해 큐를 순회하면서 K번째 요소를 순차적으로 pop한 뒤, 이 요소들로 새로운 배열을 만들어 리턴한다.

from collections import deque
N, K = map(int, input().split())

# 1 ~ N까지 순열 생성
queue = deque(range(1, N+1))
rst = []

while queue:
    # count to K
    cnt = 1
    while cnt < K:
        tmp = queue.popleft()
        queue.append(tmp)
        cnt += 1
    # if cnt == K
    tmp = queue.popleft()
    rst.append(tmp)

print("<", end="")
print(*rst, sep=", ", end="")
print(">", end="")