Algorithm & DataStructure
[Backjoon] 회전하는 큐
GeonWoo Kim
2020. 12. 18. 10:33
백준 1021번 회전하는 큐 문제는 큐를 이용해서 큐를 회전시키면서 주어진 숫자들을 뽑아내는데 최소 회전 회수를 구하는 문제이다. 쉬운 문제였는데 많은 시간을 소비해 버렸다. 문제 풀이에 있어서 컨디션도 영향을 미치는 것 같다. 또한 알고리즘 문제 풀이에 있어서는 최대한 문제 자체에 집중하기 위해서 필요한 코드만 작정하는 습관을 들여야겠다. 의사코드를 먼저 작성하면 항상 도움이 된다.
from collections import deque
q_size, pop_count = list(map(int, input().split(" ")))
pop_target = list(map(int, input().split(" ")))
q = deque([i for i in range(1, q_size+1)])
answer = 0
for target in pop_target:
target_position = q.index(target)
q_half = len(q) // 2
if target_position > q_half:
trigger = 1
else:
trigger = -1
while q[0] != target:
q.rotate(trigger)
answer += 1
q.popleft()
print(answer)