코딩테스트 대비/단계별 코딩 테스트 준비(27일 과정)

[큐/Python] 1021번: 회전하는 큐 - 효과는 굉장했다!

bluetag_boy 2022. 2. 11. 21:24
반응형
 

1021번: 회전하는 큐

첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가

www.acmicpc.net

 

알고리즘 분류

  • 자료 구조

 

 

SOLUTION

import sys
from collections import deque

N, M = map(int, sys.stdin.readline().split())
nums = list(map(int, sys.stdin.readline().split()))
queue = deque([i for i in range(1,N+1)])
cnt = 0

for num in nums:
    while True:
        if queue[0] == num:
            queue.popleft()
            break

        else:
            if queue.index(num) > len(queue) // 2:
                while queue[0] != num:
                    queue.rotate(1)
                    cnt += 1

            else:
                while queue[0] != num:
                    queue.rotate(-1)
                    cnt += 1

print(cnt)