λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🧩 Algorithm/μš°μ„ μˆœμœ„ 큐

[λ°±μ€€] 11279번: μ΅œλŒ€ νž™

by HelloRabbit 2023. 2. 26.
728x90

Hint

1. νž™ 자료ꡬ쑰 μ΄μš©ν•˜κΈ° (νž™μ΄λž€?)
2. νž™μ—μ„œ heappop()을 ν•˜λ©΄ κ°€μž₯ μž‘μ€ 값이 λ°˜ν™˜ 됨. κ·Έλ ‡λ‹€λ©΄ κ°€μž₯ 큰 값을 λ°˜ν™˜ν•˜λ €λ©΄..?
3. νž™μ— 넣은 μˆ«μžλ“€μ„ λ§ˆμ΄λ„ˆμŠ€ ν•΄μ„œ λ„£λŠ”λ‹€λ©΄ heappop() ν–ˆμ„ λ•Œ μ–΄λ–€ μˆ«μžκ°€ λ¨Όμ € λ½‘νžκΉŒ?

 

 

λ°±μ€€ 11279번: μ΅œλŒ€ νž™

import heapq
import sys

n = int(sys.stdin.readline())

heap = []       # νž™ λ§Œλ“€κΈ°(λ¦¬μŠ€νŠΈλž‘ λ§Œλ“œλŠ” 법은 λ˜‘κ°™μŒ)
for i in range(n):
    num = int(sys.stdin.readline())
    if num == 0:    # input μˆ«μžκ°€ 0 이면 ν˜„μž¬ νž™μ— λ“€μ–΄μžˆλŠ” μ΅œλŒ€λŒ€κ°’ 좜λ ₯ν•˜κΈ°
        print((heapq.heappop(heap))*(-1) if heap != [] else 0)  # νž™μ΄ λΉ„μ–΄μžˆμ§€ μ•Šμ„ λ•Œλ§Œ heappop() ν•˜κΈ°
    else:
        heapq.heappush(heap, -num)      # νž™μ— 숫자 넣을 땐 λ§ˆμ΄λ„ˆμŠ€ν•΄μ„œ λ„£κΈ°κΈ°

 

 

 

λŒ“κΈ€