less than 1 minute read

고려사항

  1. 일반 최소힙 구현해놓고 heappush의 요소로 리스트 넣을 수 있는지 확인해봄.
    공식 문서에 튜플도 넣을 수 있다고 해서(대신 그 요소의 첫 번째 값 기준으로 힙이 구성됨) 리스트도 되겠지~ 하고 써봤더니 됐음.

    Screenshot 2024-08-04 at 7 49 19 AM

    2. push할 때 첫 번째 인자는 abs()를 사용하여 절댓값으로 힙을 구성하도록 하고, 리스트 두 번째 인자로 양수/음수 표시 해줌.
    pop할 때는 리스트의 첫 번째 인자와 두 번째 인자를 곱하여 원래의 값이 출력되도록 함.

코드

#S1_11286_절댓값 힙

import sys
from heapq import heappush, heappop

def absHeap(n,num):
  h=[]

  for x in num:
    if x==0:
      if h:
        res=heappop(h)
        print(res[0]*res[1])
      else:
        print(0)
    else:
      if x<0:
        heappush(h,[abs(x),-1])
      else:
        heappush(h,[x,1])

input=sys.stdin.read
data=input().split()
n=int(data[0])
num=list(map(int,data[1:]))
absHeap(n,num)

Leave a comment