π μ΅μ ν
λ°±μ€ Class3 μ΅μ ν , Silver2
solved_ac[Class3] μ΅μ ν
λ¬Έμ
λ리 μ μλ €μ§ μλ£κ΅¬μ‘° μ€ μ΅μ νμ΄ μλ€. μ΅μ νμ μ΄μ©νμ¬ λ€μκ³Ό κ°μ μ°μ°μ μ§μνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
1.λ°°μ΄μ μμ°μ xλ₯Ό λ£λλ€.
2.λ°°μ΄μμ κ°μ₯ μμ κ°μ μΆλ ₯νκ³ , κ·Έ κ°μ λ°°μ΄μμ μ κ±°νλ€.
νλ‘κ·Έλ¨μ μ²μμ λΉμ΄μλ λ°°μ΄μμ μμνκ² λλ€.
μ λ ₯
첫째 μ€μ μ°μ°μ κ°μ N(1 β€ N β€ 100,000)μ΄ μ£Όμ΄μ§λ€. λ€μ Nκ°μ μ€μλ μ°μ°μ λν μ 보λ₯Ό λνλ΄λ μ μ xκ° μ£Όμ΄μ§λ€. λ§μ½ xκ° μμ°μλΌλ©΄ λ°°μ΄μ xλΌλ κ°μ λ£λ(μΆκ°νλ) μ°μ°μ΄κ³ , xκ° 0μ΄λΌλ©΄ λ°°μ΄μμ κ°μ₯ μμ κ°μ μΆλ ₯νκ³ κ·Έ κ°μ λ°°μ΄μμ μ κ±°νλ κ²½μ°μ΄λ€. xλ 231λ³΄λ€ μμ μμ°μ λλ 0μ΄κ³ , μμ μ μλ μ λ ₯μΌλ‘ μ£Όμ΄μ§μ§ μλλ€.
μΆλ ₯
μ λ ₯μμ 0μ΄ μ£Όμ΄μ§ νμλ§νΌ λ΅μ μΆλ ₯νλ€. λ§μ½ λ°°μ΄μ΄ λΉμ΄ μλ κ²½μ°μΈλ° κ°μ₯ μμ κ°μ μΆλ ₯νλΌκ³ ν κ²½μ°μλ 0μ μΆλ ₯νλ©΄ λλ€.
- μμ μ λ ₯ 1
9
0
12345678
1
2
0
0
0
0
32
- μμ μΆλ ₯ 1
0
1
2
12345678
0
π μλ£κ΅¬μ‘°
κ³ λ±νκ΅ μν λ¬Έμ μ§μΌλ‘ λ°μ§λ©΄ ν΄λΉ λ¬Έμ λ μμ© λ¬Έμ κ° μλ κ°λ λ¬Έμ μ μνλ€. μ΄ κΈ°νμ Heapμ λνμ¬ λ€μ ν λ² κ³΅λΆν μ μλ κΈ°νκ° λμλ€.
Heapμ μ΄λμμ νμ©λ μ μμκΉ?
- μ°μ μμ ν
Heapμ κΈ°λ³Έμ μΌλ‘ μ°μ μμ νλ₯Ό μν΄ λ§λ€μ΄μ§ μλ£κ΅¬μ‘°μ΄λ€. λ°λΌμ νλ μ°μ μμ νλ₯Ό νμ©νλ λ¬Έμ μμ μκ°λ³΅μ‘λλ₯Ό μ€μ΄κΈ° μνμ¬ μκΈ΄νκ² μ¬μ©λ κ²μ΄λ€.
- Why?
κ·Έλ λ€λ©΄ μ Heapμ΄ λ°°μ΄λ³΄λ€ μ°μ μμ ν ꡬνμ μ 리ν κΉ?
μμ νλ₯Ό μ°Έκ³ ν΄λ³΄λ©΄ Heapμ μ½μ /μμ κ° O(logn)μ΄λ€. κ·Έλ¬λ λ°°μ΄μ μ΅μ μ κ²½μ° O(n)μ μκ°λ³΅μ‘λκ° κ±Έλ¦¬κΈ° λλ¬Έμ
μ°μ μμ νλ₯Ό ꡬνν λ Heapμ μ ννλ κ²μ΄ μλκΉ μΆλ€.
π¨π»βπ» CODE
import sys
import heapq as h
input = sys.stdin.readline
test_case = int(input())
heap = []
for _ in range(test_case):
command = int(input())
if command > 0:
h.heappush(heap,command)
if command == 0:
if not heap:
print(0)
else:
print(h.heappop(heap))