[백준/파이썬] 11286번: 절댓값 힙

수박강아지·2025년 1월 26일

BAEKJOON

목록 보기
39/174

문제

https://www.acmicpc.net/problem/11286

풀이

heapq 모듈을 사용하는 문제

처음에 문제를 잘못 이해해서 heappush()를 할 때 절댓값으로 push를 했다..
예제 실행할 때 결과가 원하는대로 안 나와서 다시 문제를 보니 "절댓값을 기준으로" 가장 작은 값을 추출하는 것이었습니다.

어떤 방식으로 문제를 풀까 고민하다가, 저장을 할 때 튜플로 입력값과 입력값의 절대값을 저장하여 입력값만 추출하는 방식으로 풀었습니다.

heapq.heappush(heap, (abs(x),x))

절댓값을 기준으로 값을 뽑아야하기 때문에 절댓값을 앞에 선언해 저장해야 합니다.

print(heapq.heappop(heap)[1] if heap else 0)

그리고 원래 값만 추출하면 되기 때문에 heappop()[1]

코드

import sys, heapq
input = sys.stdin.readline

heap = []
for i 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)

0개의 댓글