deque란
- collections 패키지에서 구현한 `deque` 라는 자료형태가 있음
- stack과 queue 기능을 모두 가진 객체로 출입구를 양쪽으로 가지고 있는 것
- Stack, Queue 모두 필요에 따라서 사용할 수 있는 기능을 제공하고 있음, 특히 Queue에 대해서 할 때 주로 많이 사용
- Stack, Queue 모두 필요에 따라서 사용할 수 있는 기능을 제공하고 있음, 특히 Queue에 대해서 할 때 주로 많이 사용
deque 사용 장점
- 속도가 리스트에 비해 굉장히 빠름.
- List = O(n), deque = O(1)
- Queue 작업 시 편리하고 빠르게 사용가능
deque 사용법
- deque.append(item): item을 데크의 오른쪽 끝에 삽입
- deque.appendleft(item): item을 데크의 왼쪽 끝에 삽입
- deque.pop(): 데크의 오른쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제
- deque.popleft(): 데크의 왼쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제
- deque.extend(array): 주어진 배열(array)을 순환하면서 데크의 오른쪽에 추가
- deque.extendleft(array): 주어진 배열(array)을 순환하면서 데크의 왼쪽에 추가
- deque.remove(item): item을 데크에서 찾아 삭제
- deque.rotate(num): 데크를 num만큼 회전한다(양수면 오른쪽, 음수면 왼쪽)
참고) 위의 속도에 대한 부분으로 인해서 백준 7576번(토마토) 문제에서 일반적인 파이썬의 리스트의 경우에는 속도로 시간통과를 못하지만, deque로 하면 시간통과를 할 수 있음
몇개를 제외하곤 리스트와 동일한 기능, 동일하게 사용하면 됨
# 리스트와 다른 부분만 실행하여 보겠음
from collections import deque
deq = deque([1, 2, 3, 4, 5])
# deque.appendleft(item): item을 데크의 왼쪽 끝에 삽입
deq.appendleft(6)
print(deq) # 1
# deque.popleft(): 데크의 왼쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제
deq.popleft()
print(deq) # 2
# deque.extendleft(array): 주어진 배열(array)을 순환하면서 데크의 왼쪽에 추가
deq.extendleft([7])
print(deq) # 3
deque([6, 1, 2, 3, 4, 5]) # 1
deque([1, 2, 3, 4, 5]) # 2
deque([7, 1, 2, 3, 4, 5]) # 3
# rotate() 메서드
deq = deque([1, 2, 3, 4, 5])
deq.rotate(1)
print(deq) # 1
deq.rotate(-1)
print(deq) # 2
deque([5, 1, 2, 3, 4]) # 1
deque([1, 2, 3, 4, 5]) # 2
deque를 사용하여야 하는 이유
2024.04.08 - [파이썬] - [자료구조] 스택(Stack)과 큐(Queue) - 파이썬(Python)
[자료구조] 스택(Stack)과 큐(Queue) - 파이썬(Python)
스택(Stack) 예시) 지하철: 늦게온 사람이 제일 먼저 내림 Last In First Out : LIFO 새로운 것 : 뒤로 쌓아 둠 ex) append() 처리할 것 : 맨 뒤에 쓴 것 부터 ex) pop() a = [1,2,3,4,5] a.append(7) print(a) # 1 a.append(8) print
anichan.tistory.com