본문 바로가기
Python

#11286_절댓값 힙, #11279_최대 힙

by 푸른달아흐렛밤 2021. 10. 4.
반응형

#best

import sys
import heapq

input=sys.stdin.readline

heap = []
for _ in range(int(input())):
    x = int(input())
    
    if x != 0:
        heapq.heappush(heap, [abs(x),x])
    else:
        print(heapq.heappop(heap)[1] if heap else 0)

- 힙에 배열 넣기

 

#try

import sys,heapq
heap = []
minus = []

for i in range(int(sys.stdin.readline())):
    x = int(sys.stdin.readline())
    if x == 0:
        if len(heap) == 0 :
            print(0)
        elif len(minus) != 0:
            H = heapq.heappop(heap)
            M = heapq.heappop(minus)
            if H == M:
                print(M*-1)
            else :
                heapq.heappush(minus,M)
                print(H)
        else :
            print(heapq.heappop(heap))
    elif x < 0 :
        heapq.heappush(minus,abs(x))
        heapq.heappush(heap,abs(x))
    else :
        heapq.heappush(heap,abs(x))

 

#파이썬은 최소값이 루트. 최대값 pop하려면 -1

import sys, heapq  
heap = []  
 
for i in range(int(sys.stdin.readline())):  
    N = int(sys.stdin.readline()) * -1  
    if N == 0:  
        if len(heap) == 0:  
            print(0)  
        else:  
            print(heapq.heappop(heap) * -1)  
    else:  
        heapq.heappush(heap, N)

 

반응형