[백준 1021] 회전하는 큐

김태민·2026년 4월 18일

최종 코드

from collections import deque

n, m = map(int, input().split())
target = list(map(int, input().split()))

que = deque()

for i in range(1, n + 1):
  que.append(i)

count = 0
for i in range(len(target)):
  idx = que.index(target[i])
  if(idx >= len(que) / 2):   # 이게 오른쪽으로 밀기
    que.rotate(len(que) - idx)
    count += len(que) - idx
    que.popleft()
  else:                       # 이게 왼쪽으로 밀기
    que.rotate(-idx)
    count += idx
    que.popleft()

print(count)

최소 이동을 찾아야하니, 찾으려는 값의 index를 반환해서 큐를 오른쪽으로 회전시킬지 왼쪽으로 회전시킬지 결정했다.

백준 섭종하지마

profile
빠르게 성장하는 개발자

0개의 댓글