백준/실버
백준1021. 회전하는 큐 - Python, deque, rotate
아찌방
2025. 5. 9. 23:59
출처 : https://www.acmicpc.net/problem/1021
코드 & 풀이
import sys
from collections import deque
# 입력 처리
data = sys.stdin.read().splitlines()
N, M = map(int, data.pop(0).split(" "))
dq = deque()
for i in range(1, N + 1):
dq.append(i)
targets = [int(i) for i in list(data.pop(0).split(" "))]
answer = 0
for target in targets:
idx = dq.index(target)
size = len(dq)
if idx == 0:
dq.popleft()
elif idx <= size - idx:
dq.rotate(-idx)
answer += idx
dq.popleft()
else:
dq.rotate(size - idx)
answer += (size - idx)
dq.popleft()
print(answer)
deque를 사용하면 아주 쉽게 풀 수 있는 문제입니다.
특히 deque는 rotate(n)라는 메서드가 있는데,
데크(deque)의 원소들을 오른쪽 또는 왼쪽으로 회전시키는 기능을 합니다.
from collections import deque
dq = deque([1, 2, 3, 4, 5])
dq.rotate(2)
print(dq) # deque([4, 5, 1, 2, 3])
dq.rotate(-3)
print(dq) # deque([2, 3, 4, 5, 1])
n > 0이면 오른쪽으로
n < 0이면 왼쪽으로 돌려줍니다.
728x90