deque을 이용한 풀이
deque(덱)을 이용해서 문제를 해결했다. deque는 일명 양방향 queue
인데 queue.pop(0)
으로도 맨 앞의 요소를 꺼낼 수 있지만 그보다는 deque.popleft()
을 사용하는 편이 시간 소요가 적다.(더 직관적이기도 하고) 어떤 방향(오른쪽/왼쪽)으로 회전하는 것이 더 유리한지 판단하는 것만 잘 고려해주면 비교적 쉽게 해결 가능했다.
# 입력
import sys
from collections import deque
n, m = map(int, sys.stdin.readline().split())
arr = map(int, sys.stdin.readline().split())
count = 0
queue = deque([i+1 for i in range(n)])
# 처리
for i in arr:
if queue[0] == i:
queue.popleft()
else:
from_left = queue.index(i)
from_right = len(queue) - queue.index(i) - 1
if from_left <= from_right:
for _ in range(from_left):
queue.append(queue.popleft())
count += from_left
queue.popleft()
else:
for _ in range(from_right):
queue.appendleft(queue.pop())
count += from_right + 1
queue.pop()
print(count)