[Python] 백준 11279번: 최대 힙

SeungHyun·2023년 9월 4일

coding test

목록 보기
4/16

0. 기본 정보

0-A. 개요

백준 - 11279번 문제에 대한 분석임.

0-B. 문제 정보

백준 - 11279번: 최대 힙


1. 정답 코드

import sys
import heapq

input = sys.stdin.readline


n = int(input())

answer = []
for _ in range(n):
    t = int(input())
    if t:
        heapq.heappush(answer, -t) # push하는 요소에 음수를 취해줌
    else:
        if answer: 
        	# 출력시 다시 한번 음수를 취해주면 최대값이 출력된다.
            print(-heapq.heappop(answer)) 
        else:
            print(0)

2. 핵심 풀이

  • heap-ordered list는 항상 오름차순으로 정렬이 되지만
    heap-ordered list에 넣는 요소들에 음수를 취해주고 출력할때 다시 음수를 곱해서 출력하면
    내림차순 정렬로 출력할 수 있다.(최대값을 출력할 수 있다.)
profile
어디로 가야하오

0개의 댓글