문제 : https://www.acmicpc.net/problem/1021
덱 자료구조를 활용해 구현하면 쉽게 풀 수 있는 문제이다. 큐는 선입선출 방식이지만 덱은 양방향으로 삽입과 삭제 ( popleft, appendleft )가 가능하며, 시간 복잡도가 O(1)이다.
코드
import sys
from collections import deque
input = sys.stdin.readline
N, M = map(int, input().split())
num = list(map(int, input().split()))
q = deque(_ for _ in range(1, N + 1))
count = 0
for i in num:
while True:
if q[0] == i:
q.popleft()
break
else:
if q.index(i) < len(q) / 2:
while q[0] != i:
q.append(q.popleft())
count += 1
else:
while q[0] != i:
q.appendleft(q.pop())
count += 1
print(count)
'코딩테스트 > 백준 (python)' 카테고리의 다른 글
백준 / 14888번 / 연산자 끼워넣기 / python 파이썬 / 백트래킹 (0) | 2024.09.28 |
---|---|
백준 /1912번 / 연속합 / python 파이썬 (0) | 2024.09.27 |
백준 / 1541번 / 잃어버린 괄호 / python 파이썬 (0) | 2024.09.23 |
백준 / 2178번 / 미로 탐색 / python 파이썬 (0) | 2024.09.20 |
백준 / 1149번 / RGB거리 / python 파이썬 (0) | 2024.09.19 |