DonHurry

[Python] λ°±μ€€ 14235번 - 크리슀마슀 μ„ λ¬Ό λ³Έλ¬Έ

Problem Solving

[Python] λ°±μ€€ 14235번 - 크리슀마슀 μ„ λ¬Ό

_도녁 2022. 11. 8. 00:47

πŸ“– λ¬Έμ œ

 

14235번: 크리슀마슀 μ„ λ¬Ό

ν¬λ¦¬μŠ€λ§ˆμŠ€μ—λŠ” 산타가 μ°©ν•œ μ•„μ΄λ“€μ—κ²Œ 선물을 λ‚˜λˆ μ€€λ‹€. μ˜¬ν•΄λ„ μ‚°νƒ€λŠ” 선물을 λ‚˜λˆ μ£ΌκΈ° μœ„ν•΄ λ§Žμ€ λ…Έλ ₯을 ν•˜κ³  μžˆλŠ”λ°, 전세계λ₯Ό λŒμ•„λŒ•κΈ°λ©° μ°©ν•œ μ•„μ΄λ“€μ—κ²Œ 선물을 λ‚˜λˆ μ€„ 것이닀. ν•˜μ§€λ§Œ

www.acmicpc.net

 

πŸ”Ž ν’€μ΄

μš°μ„ μˆœμœ„ 큐λ₯Ό ν™œμš©ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. νŠΉμ •ν•œ 쑰건에 따라 μš°μ„ μˆœμœ„κ°€ κ°€μž₯ 높은 μš”μ†Œλ₯Ό μΆ”μΆœν•©λ‹ˆλ‹€.

파이썬의 heapq λͺ¨λ“ˆμ€ μ΅œμ†Œ νž™λ§Œμ„ μ§€μ›ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ 음수 ν˜•νƒœλ‘œ μ €μž₯ν•œλ‹€λ©΄, μ΅œλŒ€ νž™μ²˜λŸΌ ν™œμš©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

 

πŸ’» μ½”λ“œ

import sys
import heapq
input = sys.stdin.readline

# 선물을 담을 λ°°μ—΄
giftbox = []
for _ in range(int(input())):
    a = list(map(int, input().split()))
    # μž…λ ₯값이 0인 경우 μ„ λ¬Ό μ£ΌκΈ°
    if a[0] == 0:
        print(-heapq.heappop(giftbox) if len(giftbox) else -1)
    else:
        # μ„ λ¬Ό λ°•μŠ€μ— μ„ λ¬Ό λ‹΄κΈ°
        # νŒŒμ΄μ¬μ€ min heap만 μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ— -λ₯Ό λΆ™ν˜€ max heap처럼 μ‚¬μš©
        for i in range(a[0]):
            heapq.heappush(giftbox, -a[i+1])