[Python] 알고리즘/Silver
[1021] 회전하는 큐 (Python)
-Becca-
2021. 12. 21. 16:22
[문제]
https://www.acmicpc.net/problem/1021
1021번: 회전하는 큐
첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가
www.acmicpc.net
알고리즘 분류는 자료 구조, 덱 입니다.
deque의 위치를 이용하여 왼쪽으로 이동시킬지, 오른쪽으로 이동시킬지 정할 수 있습니다.
[코드]
import sys
from collections import deque
N, M = map(int, sys.stdin.readline().split())
dq = deque(_ for _ in range(1, N + 1))
pop_li = list(map(int, sys.stdin.readline().split()))
cnt = 0
res_cnt = 0
while len(pop_li) != res_cnt:
if dq[0] == pop_li[res_cnt]:
dq.popleft()
res_cnt += 1
else:
if dq.index(pop_li[res_cnt]) <= ((N - res_cnt) // 2):
dq.append(dq.popleft())
cnt += 1
else:
dq.appendleft(dq.pop())
cnt += 1
print(cnt)