백준 11286번 - 절댓값 힙

윤여준·2022년 5월 22일
0

백준 풀이

목록 보기
13/35
post-thumbnail

문제

문제 링크 : https://www.acmicpc.net/problem/11286

풀이

절댓값의 크기를 기준으로 정렬하는 힙 문제이다. heapq는 튜플의 첫번째 요소를 기준으로 정렬한다는 특성을 이용해서 풀었다.

만약 입력값이 0이 아니라면, heap에 튜플을 넣어주었다. 튜플은 (입력값의 절댓값, 입력값) 이런 식으로 이루어져 있다.

만약 입력값이 0이면, heap의 길이를 계산해서 heap의 길이도 0이라면 0을 출력하고 heap의 길이가 0이 아니라면 pop을 해주고 두 번째 요소를 출력해준다.

from sys import stdin
import heapq

n = int(stdin.readline())
heap = []

for i in range(n):
    x = int(stdin.readline())
    if x == 0:
        if len(heap) == 0:
            print(0)
        else:
            print(heapq.heappop(heap)[1])
    else:
        heapq.heappush(heap,(abs(x),x))
profile
Junior Backend Engineer

0개의 댓글