백준 | 11286 절댓값 힙 [Python]

yeonk·2022년 6월 27일
0

algorithm

목록 보기
83/88
post-thumbnail

💡 Python 3






🔗 문제


11286 절댓값 힙 [Link]






💻 코드


이전에 풀었던 최소 힙 문제와 거의 동일한 알고리즘으로 풀 수 있었다.
조금 더 생각해야하는 부분은 절댓값으로 비교하고 기존 숫자를 출력해야한다는 점이다.
이에 대한 해결 방법으로 (절댓값, 원래 값)으로 튜플로 묶어서 힙에 넣어줬다.
그러면 절댓값 기준으로 힙 내에서 정렬이 되고 출력할 때는 인덱스를 통해 원래 값을 출력할 수 있다.

import heapq
import sys

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

for _ in range(n):
    num = int(sys.stdin.readline())
    if num == 0:
        if heap: print(heapq.heappop(heap)[1])
        else: print(0)
    else: heapq.heappush(heap, (abs(num), num))

0개의 댓글