카테고리 없음

[백준 11286] 절댓값 힙

12.tka 2022. 2. 14. 21:40
728x90

문제 보기

 

[사용한 알고리즘]

 

[알고리즘]

1. 연산에 대한 정보를 입력받는다.

2. 0인 경우

  - 힙이 비어있으면 0을 출력한다.

  - 그 외의 경우 절댓값이 가장 작은 값을 출력하고 힙에서 해당 값을 제거한다.

3. 0이 아닌 경우 값을 힙에 추가한다.

 

[코드]

import heapq
import sys


if __name__ == "__main__":

  # 연산의 개수 입력
  n = int(sys.stdin.readline())

  # 배열 선언
  q = []

  # 연산의 개수만큼 반복
  for _ in range(n):

    # 연산에 대한 정보 입력
    tmp = int(sys.stdin.readline())

    if tmp == 0:
      # 힙이 비어있는 경우
      if len(q) == 0:
        print(0)
      else:
        # 절댓값이 가장 작은 값 출력 및 제거
        print(heapq.heappop(q)[1])
    else:
      # 값 추가
      heapq.heappush(q, [abs(tmp), tmp])
728x90