덱(Deque)이란, 양쪽에서 삽입과 삭제가 가능한 구조이며 스택과 큐의 연산을 모두 지원한다.
→ 덱은 양쪽 끝에서 데이터의 삽입과 삭제 연산을 모두 할 수 있기 때문에, 스택과 큐의 연산을 모두 구현
스택 연산
큐 연산
Scroll: 입력 제한 덱 (입력이 한 쪽에서만 발생하고, 출력은 양쪽에서 일어날 수 있음)
Shelf: 출력 제한 덱 (입력은 양쪽에서 일어나고, 출력은 한 쪽에서 일어나도록 제한)
덱의 연산은 collections 모듈에서 제공하는 deque 클래스로 구현 가능
from collections import deque
mydeq = deque([1,2,3,4])
for i in range(len(mydeq)):
print(mydeq[i])
from collections import deque
mydeq = deque([1,2,3,4])
mydeq.appendleft(-10) # 왼쪽에 데이터 삽입
print(mydeq) # deque([-10, 1, 2, 3, 4])
mydeq.append(10) # 오른쪽에 데이터 삽입
print(mydeq) # deque([-10, 1, 2, 3, 4, 10])
from collections import deque
mydeq = deque([1,2,3,4])
# 오른쪽에서 데이터 제거
print(mydeq.pop()) # 4
mydeq # deque([1, 2, 3])
# 왼쪽에서 데이터 제거
print(mydeq.popleft()) # 1
mydeq # deque([2, 3])