💡문제접근
- 지민이가 뽑아내고자 하는 수의 위치를 중간 지점 위치를 기준으로 왼쪽에 있으면 왼쪽으로 한 칸 이동시키는 ②번 과정을 수행하고 만약 오른쪽에 있으면 오른쪽으로 한 칸 이동시키는 ③번 과정을 수행한다. 뽑아내고자 하는 수의 위치가 맨 처음에 위치하면 해당하는 수를 제거하고 다음 뽑아내고자 하는 수로 넘어간다.
💡코드(메모리 : 34100KB, 시간 : 76ms)
from collections import deque
data = deque([])
N, M = map(int, input().split())
for i in range(N):
data.append(i + 1)
li = list(map(int, input().split()))
cnt = 0
for i in li:
while True:
t = data.index(i)
mid = len(data) // 2
if t == 0:
data.remove(i)
break
if t <= mid:
temp = data.popleft()
data.append(temp)
cnt += 1
else:
temp = data.pop()
data.appendleft(temp)
cnt += 1
print(cnt)
📌 deque(덱)의 rotate
메소드 : 덱의 회전을 고려한 메소드
a = deque([1, 2, 3, 4, 5])
print(a)
a.rotate(1)
print(a)
a.rotate(-1)
print(a)
deque([1, 2, 3, 4, 5])
deque([5, 1, 2, 3, 4])
deque([1, 2, 3, 4, 5])
💡소요시간 : 38m