본문 바로가기
알고리즘/BOJ

[BOJ / 백준] 11286 절댓값 힙 python / 파이썬 우선순위 큐 / 힙

by seohmoon 2023. 8. 18.

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

 

11286번: 절댓값 힙

첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0

www.acmicpc.net


1) 요구사항 분석 : 문제 읽기

0이 주어진 회수만큼 출력

 

2) 설계 : 접근 방식

배열에서 가장 작은 값을 제거 -> 우선순위 큐, 최소힙을 이용

import heapq

절대값이니까 음수이면 -를 붙여서 최소힙에 넣어줌

import heapq
import sys

input = sys.stdin.readline

heap = []
n = int(input())
for num in range(n):
    num = int(input())
    # 절댓값이 가장 작은 값 -> 튜플
    if num == 0:
        if heap != []:
            ans = heapq.heappop(heap)
            print(ans[1])
        else:
            print(0)
    elif num < 0:
        tem = -num
        heapq.heappush(heap, (tem, num))
    else:
        tem = num
        heapq.heappush(heap, (tem, num))

댓글