코드 인사이드[Code_Inside]

데크(Deque), 우선순위 큐(Priority Queue) 본문

Python/알고리즘 및 자료구조

데크(Deque), 우선순위 큐(Priority Queue)

code_inside_bit 2024. 2. 12. 14:44

 

데크(Deque) 우선순위 큐(Priority Queue)
스택과 큐의 특징을 모두 가지고 있는 복합 자료형으로 양쪽에서 삭제와 삽입을 모두 처리할 수 있음

이중 연결 리스트(가장 좋음), 배열, 연결 리스트로 구현 가능

어떤 특정 조건에 따라 우선 순위가 가장 높은 요소가 추출되는 자료형 -> 정렬 알고리즘을 기반으로 함

ex. 가장 큰 값을 추출하는 최댓값 추출

기본 리스트 자료형의 경우, 맨 뒤쪽 원소를 기준으로 삽입, 삭제를 수행하기 때문에 연산 리스트에 포함된 데이터의 수에 따라 시간 복잡도가 O(N)임
* append(), pop()

deque에서는 리스트 자료형과 다르게 인덱싱, 슬라이싱 등의 기능은 사용할 수 없지만 연속적으로 나열된 데이터의 시작 혹은 끝부분에 데이터 삽입 및 삭제 시 매우 효과적임
* popleft() : 첫번째 원소 제거 시 사용
* pop() : 마지막 원소 제거 시 사용
* appendleft(x) : 첫번째 인덱스에 원소 x를 삽입
* append(x) : 마지막 인덱스에 원소 x를 삽입


queue 모듈의 PriorityQueue(이또한 내부적으로는 heapq를 사용함)클래스를 사용할 수 있으나 주로 heap 사용하여 주로 구현함.

*heapq는 다익스트라 최단 경로 알고리즘을 포함하여 우선순위 큐 기능을 구현할 때 사용함

*heapq.heappush() : 힙에 원소 삽입
*heapq.heappop() : 힙에서 원소를 꺼냄

파이썬에서는 최대 힙(max heap)을 제공하지 않음

 

'Python > 알고리즘 및 자료구조' 카테고리의 다른 글

스택(Stack), 큐(Queue)  (1) 2024.02.07