티스토리 뷰

728x90
반응형

우선순위 큐각 원소들이 우선순위를 가지고 있고, 높은 우선순위의 원소가 낮은 우선순위의 원소보다 먼저 처리된다.

만약 우선순위가 동일하다면 먼저 들어온 원소를 처리한다.

우선순위는 힙을 통해 구현할 수 있다고 한다.

 

은, 완전 이진 트리부모 노드의 값이 항상 자식 노드보다 값이 작거나 큰 트리를 말한다.

부모 노드의 값이 항상 자식 노드보다 작은 경우를 최소힙(Min Heap)이라고 하며, 반대로 부모 노드의 값이 항상 자식 노드보다 큰 것은 최대 힙(Max Heap)이라 한다.


파이썬에는 Priority Queue와 heapq 내장 모듈이 있는데 오늘은 heapq에 대해 살펴보자.

 

heapq최소 힙 구조이고, 가장 작은 요소가 0번째에 위치한다.

또한 모든 k에 대해 heap[k] <= heap[2*k+1] 또는 heap[k] <= heap[2*k+2] 만족한다.

 

heappush()힙의 형태를 유지하면서(우선순위를 지정하여) item을 푸시하고,

pop()힙을 유지하며 우선순위가 가장 작은 원소를 pop하여 반환한다.

 

heapify()를 사용하여 리스트를 heap으로 변환할 수 있다.

 

그러면 백준과 프로그래머스의 힙 관련 문제풀이들을 살펴보자.

 


1. 백준 - #1927 최소 힙

https://live-for-myself.tistory.com/206

 

[CodingTest] 백준 #1927 최소 힙

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

live-for-myself.tistory.com

 

2. 백준 - #11279 최대 힙

https://live-for-myself.tistory.com/205

 

[CodingTest] 백준 #11279 최대 힙 / 힙큐 heapq

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

live-for-myself.tistory.com

 

3. 백준 - #11286 절댓값 힙

https://live-for-myself.tistory.com/207

 

[CodingTest] 백준 #11286 절댓값 힙

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

live-for-myself.tistory.com

4. 프로그래머스 - 더 맵게

https://live-for-myself.tistory.com/18

 

[CodingTest] 프로그래머스 Programmers 힙 Level 2 더 맵게

파이썬에는 heapify 메서드가 있고 최소힙으로 구현해준다. 힙은 오랜만에 봐서 개념이 가물가물했는데 개념을 보니 대충 생각이 났다. 힙의 좋은 점은 스택, 큐와 다르게 push와 pop을 하면 바로 자

live-for-myself.tistory.com

 

반응형

'알고리즘' 카테고리의 다른 글

[알고리즘] 탐욕법 Greedy Algorithm  (0) 2022.01.23
[알고리즘] dfs와 bfs  (0) 2022.01.23
[알고리즘] 이분 탐색  (0) 2022.01.23
[알고리즘] 동적계획법  (0) 2022.01.23
[CodingTest] Python method 정리  (0) 2021.11.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함