
과정
- 덱에서 찾으려는 값의 인덱스를 구한다.
- 해당 인덱스를 전체 길이 // 2와 비교해서 앞에 있으면 앞으로 돌리고, 뒤에 있으면 뒤로 돌린다.
- 맨 앞에 찾으려는 값이 있으면 멈추고 popleft
from collections import deque
N, M = map(int, input().split())
lst = map(int, input().split())
queue = deque(list(i for i in range(1, N+1)))
ans = 0
for i in lst:
for j in range(N):
if i == queue[j]:
idx = j
# 오른쪽으로 돌림
if idx > N//2:
while queue[0] != i:
a = queue.pop()
queue.appendleft(a)
ans += 1
# 왼쪽으로 돌림
else:
while queue[0] != i:
a = queue.popleft()
queue.append(a)
ans += 1
queue.popleft()
N -= 1
print(ans)
뻘짓
- 큐를 돌린만큼을 계속 계산해서 다음 들어올 수가 어느 위치에 있을지 계산하는 방식을 계속 생각했었다.
- 입력이 50까지만 들어오므로 인덱스를 하나하나 찾는 것도 괜찮다.