์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿ’ก

10. ์ตœ์†Œํž™ _ ํŒŒ์ด์ฌ

@ENFJ 2025. 2. 20. 20:45

์ „์ฒด์ฝ”๋“œ

import sys
import heapq as hq
# ์ž…๋ ฅ ๊ฐ’
# 5
# 3
# 6
# 0
# 5
# 0
# 2
# 4
# 0
# -1
sys.stdin=open("C:\\Users\\input.txt",'rt')

a= []
while True:
    n = int(input())
    if n == -1:
        break
    if n == 0:
        if len(a) == 0:
            print(-1)
        else:
            print(hq.heappop(a))
    else:
        hq.heappush(a, n)

์ด ์ฝ”๋“œ๋Š” ์ตœ์†Œ ํž™ (Min Heap) ์„ ์ด์šฉํ•˜์—ฌ ์ž…๋ ฅ๋œ ๊ฐ’์„ ๊ด€๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด์•ผ.
ํ•˜๋‚˜์”ฉ ์ฐจ๊ทผ์ฐจ๊ทผ ์„ค๋ช…ํ•ด์ค„๊ฒŒ! ๐Ÿ˜Š


โœ… ์ฝ”๋“œ ๋ถ„์„

1๏ธโƒฃ import heapq as hq

 
import heapq as hq
  • heapq ๋ชจ๋“ˆ์„ hq๋ผ๋Š” ๋ณ„์นญ์œผ๋กœ ๊ฐ€์ ธ์˜ด
  • ํŒŒ์ด์ฌ์˜ heapq๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ตœ์†Œ ํž™ (Min Heap) ์„ ์ œ๊ณตํ•จ

2๏ธโƒฃ ํŒŒ์ผ ์ž…๋ ฅ ๋ฐ›๊ธฐ

 
sys.stdin=open("C:\\input.txt",'rt')
  • "input.txt" ํŒŒ์ผ์—์„œ ์ž…๋ ฅ์„ ์ฝ์–ด์˜ด
  • ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ๋Š” ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ•จ!

3๏ธโƒฃ ์ดˆ๊ธฐํ™”

 
a = [] # ์ตœ์†Œ ํž™์œผ๋กœ ์‚ฌ์šฉํ•  ๋ฆฌ์ŠคํŠธ
  • ๋นˆ ๋ฆฌ์ŠคํŠธ a๋ฅผ ์„ ์–ธ
  • heapq ๋ชจ๋“ˆ์„ ์ด์šฉํ•ด์„œ ์ตœ์†Œ ํž™์œผ๋กœ ์‚ฌ์šฉํ•  ์˜ˆ์ •

4๏ธโƒฃ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ˆซ์ž ์ž…๋ ฅ ๋ฐ›๊ธฐ

while True:
	n = int(input()) # ์ •์ˆ˜ ์ž…๋ ฅ
  • ์ž…๋ ฅ์„ ๊ณ„์† ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•จ

5๏ธโƒฃ ์ข…๋ฃŒ ์กฐ๊ฑด (-1 ์ž…๋ ฅ ์‹œ ์ข…๋ฃŒ)

if n == -1:
	break
  • -1์ด ์ž…๋ ฅ๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒ

6๏ธโƒฃ n == 0์ผ ๋•Œ (ํž™์—์„œ ์ตœ์†Ÿ๊ฐ’ ์ œ๊ฑฐ ๋ฐ ์ถœ๋ ฅ)

 
if n == 0:
    if len(a) == 0:   # ํž™์ด ๋น„์–ด ์žˆ์œผ๋ฉด -1 ์ถœ๋ ฅ
        print(-1)
    else:
        print(hq.heappop(a))  # ์ตœ์†Ÿ๊ฐ’์„ ๊บผ๋‚ด์„œ ์ถœ๋ ฅ
  • ์ž…๋ ฅ๋œ ๊ฐ’์ด 0์ด๋ฉด:
    1. ํž™์ด ๋น„์–ด ์žˆ๋‹ค๋ฉด -1 ์ถœ๋ ฅ
    2. ๋น„์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด heapq.heappop(a)๋ฅผ ์‚ฌ์šฉํ•ด ์ตœ์†Ÿ๊ฐ’์„ ๊บผ๋‚ด๊ณ  ์ถœ๋ ฅ

7๏ธโƒฃ ์ˆซ์ž๊ฐ€ 0์ด ์•„๋‹ ๋•Œ (ํž™์— ์ถ”๊ฐ€)

 
else:
    hq.heappush(a, n)  # ํž™์— ์ƒˆ๋กœ์šด ๊ฐ’ ์ถ”๊ฐ€
  • ์ž…๋ ฅ๋œ ๊ฐ’์ด 0๋„ ์•„๋‹ˆ๊ณ  -1๋„ ์•„๋‹ˆ๋ฉด, ํž™์— ์ถ”๊ฐ€

โœ… ์‹คํ–‰ ์˜ˆ์ œ ๋ถ„์„

์ž…๋ ฅ๊ฐ’:

 
5 3 6 0 5 0 2 4 0 -1

 

5 5 ์ถ”๊ฐ€ [5]  
3 3 ์ถ”๊ฐ€ [3, 5]  
6 6 ์ถ”๊ฐ€ [3, 5, 6]  
0 ์ตœ์†Ÿ๊ฐ’ 3 ์ œ๊ฑฐ [5, 6] 3
5 5 ์ถ”๊ฐ€ [5, 6, 5]  
0 ์ตœ์†Ÿ๊ฐ’ 5 ์ œ๊ฑฐ [5, 6] 5
2 2 ์ถ”๊ฐ€ [2, 6, 5]  
4 4 ์ถ”๊ฐ€ [2, 4, 5, 6]  
0 ์ตœ์†Ÿ๊ฐ’ 2 ์ œ๊ฑฐ [4, 6, 5] 2
-1 ์ข…๋ฃŒ    

์ถœ๋ ฅ ๊ฒฐ๊ณผ:

3 5 2

โœ… ์ •๋ฆฌ

  • ์ตœ์†Œ ํž™ (heapq)๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž…๋ ฅ๊ฐ’์„ ๊ด€๋ฆฌ
  • n == 0์ด๋ฉด ํž™์—์„œ ์ตœ์†Ÿ๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ณ  ์ถœ๋ ฅ
  • n == -1์ด๋ฉด ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ
  • 0์ด ์•„๋‹Œ ์ •์ˆ˜๋Š” ํž™์— ์ถ”๊ฐ€