[Python] 백준-1927(최소힙), 11297(최대힙)

혜원·2022년 12월 30일
0

백준

목록 보기
18/25

1927 - 최소힙

백준 1927 - 최소힙

문제

코드

import sys
import heapq

input = sys.stdin.readline;

heap = []
N = int(input())

for _ in range(N):
num = int(input())

if num == 0:
    if heap:
        print(heapq.heappop(heap))
    else:
        print("0")

else:
    heapq.heappush(heap, num)

해설

  1. import heapq -> heapq 이용... heapq는 최소힙이 기본이다.
  2. heapq의 함수 중 heappush(리스트, 값)과 heappop(리스트) 를 이용해 값을 넣고 0이 입력되면 출력되게 했다.
  3. heap이 빈 리스트인지 판단은 if heap: 을 이용했다.

11279 - 최대힙

백준 11279 - 최대힙

문제

코드

import sys
import heapq

input = sys.stdin.readline;

heap = []
N = int(input())

for _ in range(N):
    num = int(input())

    if num == 0:
        if heap:
            print(heapq.heappop(heap)[1])
        else:
            print("0")

    else:
        heapq.heappush(heap,(-num, num))

해설

  1. heapq는 최소힙 기능만을 제공한다.

  2. 따라서 힙에 튜플을 추가했을때 첫번째 원소를 기준으로 최소힙이 생성되는 것을 이용하여 문제를 풀었다.
    heapq.heappush(heap,(-num, num))

  3. 값을 출력할 때에는 원래 값인 두번째 원소가 필요한 것이므로 다음과 같이 출력한다.
    print(heapq.heappop(heap)[1])

profile
안녕하세요

0개의 댓글