알고리즘 풀이/백준

[백준 11279] 최대 힙

mhko411 2021. 4. 18. 21:41
728x90

www.acmicpc.net/problem/11279

 

11279번: 최대 힙

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

www.acmicpc.net


접근

python의 heapq를 사용해보았다.

최대힙이 되도록 heap 자료구조에 넣고 0을 입력할 때마다 최댓값을 출력한다.

 

구현

N개의 수를 입력한다.

0이 입력되었을 때 heap이 비어있으면 0을, 아니라면 최댓값을 출력한다.

이외의 수가 입력된다면 heap 자료구조에 최댓값이 위에 있도록 마이너스 값과 튜플형태로 넣어준다.

import sys
import heapq
input = sys.stdin.readline

N = int(input())
hq = []
for _ in range(N):
    number = int(input())
    if number == 0:
        if not hq:
            print(0)
        else:
            result = heapq.heappop(hq)
            print(result[1])
    else:
        heapq.heappush(hq, (-number, number))

'알고리즘 풀이 > 백준' 카테고리의 다른 글

[백준 1987] 알파벳  (0) 2021.04.20
[백준 15658] 연산자 끼워넣기(2)  (0) 2021.04.19
[백준 11497] 통나무 건너뛰기  (0) 2021.04.17
[백준 9935] 문자열 폭발  (0) 2021.04.13
[백준 2304] 창고 다각형  (0) 2021.04.13