Search

[백준 11279] 최대 힙

[백준 11279] 최대 힙

Tip

최대 힙 구현
파이썬의 heapq 모듈 사용
heappush : 힙에 데이터가 오름차순으로 정렬되게 저장
heappop : 힙의 가장 왼쪽 원소를 빼서 출력
heappop을 통해 가장 큰 원소를 출력하려면 데이터가 내림차순으로 정렬되어야 함
heappuish를 통해 x를 저장할 때 -x값을 활용하여 내림차순으로 정렬되게 하자
(-x, x)

풀이 소스 코드

import sys, heapq si = sys.stdin.readline n = int(si()) max_heap = [] for _ in range(n): x = int(si()) if x != 0: heapq.heappush(max_heap, (-x, x)) # 가장 큰 값을 왼쪽에 저장할 수 있도록 (-x, x) 형태로 저장 else: if len(max_heap) == 0: # 힙이 비어있으면 print(0) else: print(heapq.heappop(max_heap)[1]) # 가장 큰(왼쪽) 값 출력
Python