본문 바로가기

백준14235 - 크리스마스 선물 (힙) Python 본문

개발/algorithm

백준14235 - 크리스마스 선물 (힙) Python

자전하는명왕성 2023. 11. 21. 09:50

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

이 문제는 최대 힙을 활용하여 해결할 수 있는 문제다. 

파이썬에서는 최대 힙을 제공하지 않지만, 선물의 가치를 음수로 저장하는 방법으로 최소 힙으로 최대 힙 구현이 가능하다.

이때 힙에 원소 저장 시 음수로 저장하고, 반환할 때 양수로 전환하여 반환한다는 것만 주의하면 된다.

 

전체 소스 코드

import sys
data_temp = sys.stdin if sys.platform == 'linux' else open('입력.txt', 'r')
input_data = data_temp.read().splitlines()
import heapq

def solution (data) :
  int(data.pop(0))

  pq, result = [], []

  for v in data :
    if v == '0' : 
      result.append(abs(heapq.heappop(pq))) if pq else result.append(-1)
    else :
      items = list(map(lambda x : -int(x), v.split()))
      for item in items[1:] :
        heapq.heappush(pq, item)

  print('\n'.join(map(str, result)))

solution(input_data)
Comments