본문 바로가기
코딩/백준

알고리즘 - Python / 백준 - 11286번 : 절댓값 힙

반응형

11286번: 절댓값 힙 (acmicpc.net)

 

11286번: 절댓값 힙

첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0

www.acmicpc.net

 


풀이

  • 최소힙 , 최대힙 문제와 비슷한 절댓값 힙 문제이다.
  • 파이썬에서 힙은 heapq 모듈을 통해 쉽게 구현할 수 있다.
  • 음수와 양수를 모두 입력받고 절댓값이 작은 값을 내보내므로 힙에 (입력값의 절댓값 , 정수 값) 으로 저장한다.
  • 이후 입력값이 절댓값 기준으로 pop을 진행하면 정답

 

import sys
import heapq

heap = []
n = int(sys.stdin.readline())
for _ in range(n):
  m = int(sys.stdin.readline())
  if m == 0:
    if len(heap) == 0:
      print(0)
    else:
      print(heapq.heappop(heap)[1])
  else:
    if m > 0:
      heapq.heappush(heap, (m,m))
    elif m < 0:
      heapq.heappush(heap, (-m , m))

 

 

반응형