Algorithm
11866 요세푸스 문제 0 / 큐, 덱
김예나
2025. 1. 15. 11:36
Deque
Stack으로 사용하는 법
- dq.append(값)
- dq.pop()
- 오른쪽이 일반 기준이라고 생각하면 됨
Queue로 사용하는 법
- dq.append(값)
- dq.popleft()
rotate()
- rotate 값이 음수인 경우
- 왼쪽으로 큐가 돌게 됨 -> 앞쪽에 있는 요소가 뒤로 가게 됨
- rotate 값이 양수인 경우
- 왼쪽으로 큐가 돌게 됨 -> 뒤쪽에 있는 요소가 앞으로 가게 됨
정답코드
import collections
n, k = map(int, input().split())
deque = collections.deque()
ans = []
for i in range(1, n+1):
deque.append(i)
idx = 0
while 0 < len(deque):
idx = (idx + 2) % len(deque)
#rotate가 음수라면 앞쪽에 있는 요소가 해당 갯수만큼 뒤쪽으로 감
deque.rotate(-(k-1))
ans.append(deque.popleft())
print("<", end="")
for i in ans[:-1]:
print(str(i)+", ", end="")
print(ans[-1], end="")
print(">", end="")