백준 11286번 파이썬

Myeongsu·2022년 1월 11일

백준

목록 보기
15/15

문제링크: 백준 11286번(절댓값 힙)
백준 11286번

이 문제는 x가 0이고, 배열이 비어있으면 0출력, 배열이 비어있지 않으면 절댓값이 가장 작은 값을 출력, x가 0이 아닌 정수면 배열에 x의 절댓값을 추가하는 문제다.
또한 절댓값이 같은 수가 여러개면 그 중에서 x가 가장 작은 값을 먼저 출력한다.

import sys, heapq
input = sys.stdin.readline

hq = []
n = int(input())

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

이 문제 역시 파이썬의 heapq 모듈을 사용했다.
heapq.heappush(hq, (abs(x), x)를 통해 우선순위에 x의 절댓값, 값에는 x이 위치한다.
예를 들어 x가 -1인 경우와 x가 1인 경우에 우선순위는 모두 1이지만, 값이 각각 -1, 1이기 때문에 우선순위가 같더라도 값이 작은 수 부터 출력된다.

profile
명수의 개발 공방

0개의 댓글