차곡차곡

[BOJ/Python] 백준 1021번 - 회전하는 큐 본문

CS/Algorithm

[BOJ/Python] 백준 1021번 - 회전하는 큐

sohy 2022. 5. 17. 01:26

백준 #1021 회전하는 큐

 

1021번: 회전하는 큐

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

www.acmicpc.net

from collections import deque
import sys
input = sys.stdin.readline

n, m = map(int, input().split())   # n: 큐의 크기, m: 뽑아내려는 원소 개수
spot = deque(list(map(int, input().split())))   # 뽑아내려는 원소 위치

inx = deque(list(range(n)))   # 기존 인덱스
cnt = 0
for i in range(m):
    while True:
        if inx.index(spot[i] - 1) <= len(inx)//2:
            if inx[0] == spot[i] - 1:
                inx.popleft()
                break
            else:
                inx.append(inx.popleft())
                cnt += 1
        else:
            if inx[0] == spot[i] - 1:
                inx.popleft()
                break
            else:
                inx.appendleft(inx.pop())
                cnt += 1

print(cnt)
  1. 뽑아내려는 원소의 위치가 남아있는 원소 개수의 반 이하일 경우 원소를 찾을 때까지 맨 앞 원소를 맨 뒤로 보낸다.
  2. 뽑아내려는 원소의 위치가 남아있는 원소 개수의 반보다 클 경우 원소를 찾을 때까지 맨 뒤 원소를 맨 앞으로 보낸다.

 

Comments