CS/algorithm & data structure

[파이썬 알고리즘 인터뷰] 데크, 우선순위 큐

hjkim0502 2022. 2. 27. 19:22

- 데크 (double-ended queue): 양 쪽에서 삽입 및 삭제 가능

- ADT는 이중연결리스트로 구현

 

641. design circular deque

- 이중 연결 리스트로 구현(빈 head, tail)

* 배열은 첫 인덱스에 삽입 시 O(n)

 

- 우선순위 큐: 특정 조건에 따른 우선순위가 가장 높은 순으로 추출 (ex. 최댓값 추출) -> 정렬 알고리즘으로 구현 가능

- 다익스트라 알고리즘이나 힙 자료구조와 관련이 깊음

 

23. merge k sorted lists

- 파이썬 heapq 모듈 (최소 힙): 이진 트리 기반

1. 원소들이 정렬된 상태(키 기준)로 삽입, 삭제

2. 가장 작은 원소가 첫 인덱스에 위치

3. 모든 원소들은 자식 원소들보다 작거나 같게 위치

* 두번째로 작은 값 확인하려면 가장 작은 값 삭제하고 첫 인덱스 확인

* 중복값 푸쉬 불가능