마음만 바쁜 사람

- 최소 힙(min-heap)의 구조

- 삽입/삭제: O(logN)

import heapq로 사용 가능

push: heapq.heappush(hq, item)

pop: heapq.heappop(hq)

import heapq
pq = []
heapq.heappush(pq, 6)
heapq.heappush(pq, 12)
heapq.heappop(pq)

 

heapify

- 리스트 x를 heap으로 변환

x = [4, 3, 1, 2, 5, 6]
print(x) # [4, 3, 1, 2, 5, 6]
heapq.heapify(x)
print(x) # [1, 2, 4, 3, 5, 6]

 

heapq를 사용하는 이유?

from queue import PriorityQueue로 일반 우선순위 큐도 사용할 수 있다.

하지만 이는 멀티스레드 환경에서 사용해도 문제가 없도록 thread-safe 하게 설계되어 있다 -> 느리다

코테에서는 멀티스레딩 프로그램을 쓰지 않는 경우가 대부분이기 때문에 코테용으로 쓸 떄는 그냥 heapq를 쓰자..!

 

 

참고 예제: BOJ 11286: 절댓값 힙

2022.04.22 - [ALGORITHM/BOJ] - 11286- 절댓값 힙

 

11286- 절댓값 힙

https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배..

notbusyperson.tistory.com

 

'ALGORITHM > Data Structure' 카테고리의 다른 글

[면접용] 기본 정렬 알고리즘 정리  (0) 2022.06.24
Counting Sort(계수 정렬)  (0) 2022.06.14
[Python] 딕셔너리(Dictionary) 정렬  (0) 2022.04.22
profile

마음만 바쁜 사람

@훌루훌루

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!