์๊ณ ๋ฆฌ์ฆ ๐ก
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 ์ถ๋ ฅ
- ๋น์ด ์์ง ์์ผ๋ฉด 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์ด ์๋ ์ ์๋ ํ์ ์ถ๊ฐ