최소힙
2022. 1. 25. 08:39ㆍ파이썬/알고리즘
알고리즘 문제를 풀다보면 가끔 최소힙이라는 자료구조를 이용해야 할 때가 있다.
일단 힙이라는 것은 들어온 순서로 나가는 선입선출 방식의 단순한 자료구조이다.
하지만 최소힙은 들어왔을 때 작은 순서로 나가게 된다. (최대힙도 있다! 원리는 거의 유사하다.)
최소힙의 자세한 원리는 이 블로그에서 잘 설명해주고 있는 것 같다.
파이썬에서 어떻게 최소힙을 사용할 수 있을지 백준의 1927번 문제를 풀어보자.
push(넣는다.)와 pop(꺼낸다.)이라는 명령으로 단순하게 작동한다.
아래처럼 가져와서 이용할 때 list를 만들어주고 그것을 push를 할 때 활용한다.
import heapq
from sys import stdin
h = []
count = 0
m = int(stdin.readline().rstrip())
for _ in range(m) :
x = int(stdin.readline().rstrip())
if x!=0 :
heapq.heappush(h,x)
count+=1
elif x==0 :
if count == 0 :
print(0)
continue
print(heapq.heappop(h))
count-=1
반응형
'파이썬 > 알고리즘' 카테고리의 다른 글
| 최빈값 구하기 (Collections.Counter 클래스) (0) | 2022.02.06 |
|---|---|
| 백준 10825 국영수 정렬 문제 (sorted) (0) | 2022.02.04 |
| 구현 : 문자열 압축 (0) | 2022.01.05 |
| 구현 : 문자열 재정렬 (0) | 2022.01.05 |
| 구현 : 럭키 스트레이트 (0) | 2022.01.05 |