[BOJ] Q1021 회전하는 큐
[BOJ] Q1021 회전하는 큐
Question
Language: Python
Difficulty: Silver 4
큐에 특정 위치값에 있는 데이터를 빼내기 위해 최소한의 위치 이동 연산을 수행하려한다.(왼쪽 이동/오른쪽 이동) 왼쪽 이동/오른쪽 이동을 최소화 하기 위해서는 해당 index 가 큐의 절반 기준으로 어디에 위치하는 지 알아야한다.
큐의 왼쪽 절반 부분에 있으면 왼쪽 이동 연산을 수행하는 것이 최소 이동이고, 그 반대 인 경우 오른쪽 이동 연산을 수행하는 것이 최소 이동 연산이다.
Solution
from collections import deque
def solution():
global n
queue=deque()
for i in range(1,n+1):
queue.append(i)
count=0
for query in queries:
if query==queue[0]:
queue.popleft()
else:
if queue.index(query) <= len(queue)//2:
while queue[0] != query:
queue.append(queue.popleft())
count+=1
queue.popleft()
else:
while queue[0] != query:
queue.appendleft(queue.pop())
count+=1
queue.popleft()
print(count)
if __name__ == "__main__":
n,m=0,0
queries=[]
with open("input1021.txt","r") as file:
n,m=map(int,file.readline().split())
queries=list(map(int,file.readline().split()))
solution()
댓글남기기