BOJ : 최대 힙 [11279]

재현·2021년 4월 25일
0

1. 문제


널리 잘 알려진 자료구조 중 최대 힙이 있다. 최대 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오.

배열에 자연수 x를 넣는다.
배열에서 가장 큰 값을 출력하고, 그 값을 배열에서 제거한다.
프로그램은 처음에 비어있는 배열에서 시작하게 된다.

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

2. 아이디어


  • 최대 힙
    1. import heapq
    2. 입력 값을 heappush
    3. 만약 입력값이 0이면 최대 힙을 가져온다.
      중요 : heapq.heappop(max_heap)을 하면 최소 힙을 가져온다. 따라서 첫 원소의 최소값을 가진 두번째 원소를 반환하면 최대값이 된다.

출처 : https://littlefoxdiary.tistory.com/3

3. 코드


mine

import sys
import heapq

input = lambda: sys.stdin.readline()
n = int(input())
max_heap = []
for i in range(n):
  number = int(input())
  heapq.heappush(max_heap, (-number, number))
  if number == 0:
    print(heapq.heappop(max_heap)[1])
profile
성장형 프로그래머

0개의 댓글