양쪽 끝에서 데이터를 삽입/삭제할 수 있는 자료구조
append(x) 덱의 오른쪽(뒤쪽) 에 x 추가
appendleft(x) 덱의 왼쪽(앞쪽) 에 x 추가
pop() 덱의 오른쪽(뒤쪽) 요소 제거 후 반환
popleft() 덱의 왼쪽(앞쪽) 요소 제거 후 반환
extend(iterable) 여러 개의 요소를 오른쪽(뒤쪽) 에 추가
extendleft(iterable) 여러 개의 요소를 왼쪽(앞쪽) 에 추가
rotate(n) 덱의 요소를 n만큼 회전 (n > 0이면 오른쪽, n < 0이면 왼쪽)
reverse() 덱의 요소 순서를 뒤집음
len(deque) 덱의 길이 반환
🔹 collections.deque 라이브러리를 사용해서 구현.
🔹 list보다 deque가 빠름 (O(1)로 빠른 삽입/삭제 가능, list는 O(N) 걸릴 수도 있음)
from collections import deque
# 덱 초기화
dq = deque()
# 오른쪽(뒤쪽) 삽입
dq.append(1) # [1]
dq.append(2) # [1, 2]
# 왼쪽(앞쪽) 삽입
dq.appendleft(0) # [0, 1, 2]
# 오른쪽(뒤쪽) 삭제
dq.pop() # [0, 1] -> 2 제거됨
# 왼쪽(앞쪽) 삭제
dq.popleft() # [1] -> 0 제거됨
print(dq) # deque([1])
10866 - 덱
2346 - 풍선 터뜨리기
18115 - 카드 놓기