코딩테스트/백준 (python)
백준 / 1021번 / 회전하는 큐 / python 파이썬
seulll
2024. 9. 25. 20:04
문제 : https://www.acmicpc.net/problem/1021
덱 자료구조를 활용해 구현하면 쉽게 풀 수 있는 문제이다. 큐는 선입선출 방식이지만 덱은 양방향으로 삽입과 삭제 ( popleft, appendleft )가 가능하며, 시간 복잡도가 O(1)이다.
코드
import sys
from collections import deque
input = sys.stdin.readline
N, M = map(int, input().split())
num = list(map(int, input().split()))
q = deque(_ for _ in range(1, N + 1))
count = 0
for i in num:
while True:
if q[0] == i:
q.popleft()
break
else:
if q.index(i) < len(q) / 2:
while q[0] != i:
q.append(q.popleft())
count += 1
else:
while q[0] != i:
q.appendleft(q.pop())
count += 1
print(count)