이번 문제는 기본 자료구조 중 하나인 힙을 이용하는 문제였다.
이 문제의 경우에는, 문제를 푸는 것은 쉽지만, 제한된 시간 내에서 푸는 것이 어려운 점이다. 최대한 시간을 줄여야 한다.
from heapq import *
import sys
input=sys.stdin.readline
n=int(input())
heap=[]
for _ in range(n):
n=int(input())
if n==0:
if not heap:
print(0)
else:
print(heappop(heap)[1])
else:
heappush(heap,(abs(n),n))
heapq를 import 하고, heap에 push할 때 수의 절댓값과 실제값을 tuple에 넣어서 저장한다.
이렇게 되면, tuple의 첫째 자리가 index로 heapify되기 때문에 문제 없이 sort할 수 있다.
pop할 때는 실제 값인 tuple의 1번째 index를 print해준다.
'Computer Science > Algorithm' 카테고리의 다른 글
BOJ 26092: 수학적인 최소 공통 조상 [Python 3] (0) | 2022.12.21 |
---|---|
BOJ 26217: 별꽃의 세레나데 (Easy) (0) | 2022.12.18 |
[Python 3] BOJ 15686 치킨 배달 (0) | 2022.12.15 |
BOJ 16987: 계란으로 계란치기 [Python 3] (0) | 2022.11.23 |
BOJ 14889: 스타트와 링크 (Python3) (0) | 2022.11.16 |