본문 바로가기

PS/백준

[백준 11279번] 최대 힙 (파이썬/python)

728x90

https://www.acmicpc.net/problem/11279

 

11279번: 최대 힙

첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가

www.acmicpc.net

 

파이썬의 heapq 라는 자료구조를 이용해 우선순위 큐 최대힙을 사용하면 되는 문제였다.

https://velog.io/@janeljs/python-for-coding-test-6

 

코딩테스트를 위한 파이썬 문법 (6) (heapq, heap sort, min heap)

힙 정렬(heap sort) 힙 정렬은 max heap이나 min heap 트리를 이용한 정렬 방식으로 내림차순 정렬을 위해서는 max heap이, 오름차순 정렬을 위해서는 min heap이 사용된다. 오름차순 정렬 파이썬에는 최소

velog.io

파이썬으로는 우선순위큐를 오랜만에 써봐서 한 번 내용 정리 해줬다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import sys
import heapq
 
input = sys.stdin.readline
 
= int(input())
pq = []
for _ in range(n):
    x = int(input())
    if x == 0 and pq:
        print(-heapq.heappop(pq))
        continue
    elif x == 0 and len(pq) == 0:
        print(0)
        continue
    heapq.heappush(pq, -x)
 
cs
728x90