GW LABS

[Backjoon] 회전하는 큐 본문

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)

'Algorithm & DataStructure' 카테고리의 다른 글

[Backjoon] 소수&팰린드롬  (0) 2021.01.12
[Backjoon] 트럭 주차  (0) 2021.01.02
[Backjoon] 통나무 건너뛰기  (0) 2020.12.13
[Backjoon] 톱니바퀴  (0) 2020.12.10
[Backjoon] 저울  (0) 2020.12.07
Comments