본문 바로가기
백준/실버

백준1021. 회전하는 큐 - Python, deque, rotate

by 아찌방 2025. 5. 9.

 

출처 : 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