백준 11279

Jehyung Ahn·2023년 4월 17일
0
post-thumbnail

최대 힙


1. 조건

  • N : 연산의 개수 ( 1 <= N <= 100,000)
  • x : 음이 아닌 정수 ( 0 <= x < 2^31)

2. 출력

  • x != 0 : 배열의 최대값을 출력
  • x == 0 : 0을 출력

3. 방식

  • 파이썬 힙 모듈을 사용함
  • 힙 모듈은 기본적으로 최소 힙의 형태이므로 ( -2 < -1 )인 음의 특징을 사용함
  • x의 입력이 하나씩 주어져서 sys.stdin.readline 사용

4. 코드

# 최대 힙

import sys
import heapq    # 파이썬 내부모듈 힙 사용

input = sys.stdin.readline  # 한 줄씩 받는 코드를 빨리 받기 위함
N = int(input())
heap = []

for _ in range(N):  # N번만큼 반복
    x = int(input())

    if x:   # 0이 아닌 경우, 추가
        heapq.heappush(heap, (-x, x))   # 추가시 음과 양의 자연수를 함께 저장
    elif heap:  # x가 0이지만, 힙에 원소가 있는 경우
        print(heapq.heappop(heap)[1])   # 정렬은 -x로 되지만, 출력시 필요한 수는 x
    else:   # x가 0이고 힙이 비어있는 경우
        print(0)
profile
A Curious Developer

0개의 댓글