[programmers] μ΄μ€μ°μ μμν
μ½λ© ν μ€νΈ μ°μ΅ - ν (Heap)
<μ΄μ€μ°μ μμν>
λ¬Έμ μ€λͺ
μ΄μ€ μ°μ μμ νλ λ€μ μ°μ°μ ν μ μλ μλ£κ΅¬μ‘°λ₯Ό λ§ν©λλ€.
λͺ λ Ήμ΄ μμ ν(λμ΄) I μ«μ νμ μ£Όμ΄μ§ μ«μλ₯Ό μ½μ ν©λλ€. D 1 νμμ μ΅λκ°μ μμ ν©λλ€. D -1 νμμ μ΅μκ°μ μμ ν©λλ€.
μ΄μ€ μ°μ μμ νκ° ν μ°μ° operationsκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ,
λͺ¨λ μ°μ°μ μ²λ¦¬ν ν νκ° λΉμ΄μμΌλ©΄ [0,0] λΉμ΄μμ§ μμΌλ©΄ [μ΅λκ°, μ΅μκ°]μ return νλλ‘
solution ν¨μλ₯Ό ꡬνν΄μ£ΌμΈμ.
μ ν μ¬ν
- operationsλ κΈΈμ΄κ° 1 μ΄μ 1,000,000 μ΄νμΈ λ¬Έμμ΄ λ°°μ΄μ λλ€.
- operationsμ μμλ νκ° μνν μ°μ°μ λνλ λλ€.
: μμλ “λͺ λ Ήμ΄ λ°μ΄ν°” νμμΌλ‘ μ£Όμ΄μ§λλ€.
- μ΅λκ°/μ΅μκ°μ μμ νλ μ°μ°μμ μ΅λκ°/μ΅μκ°μ΄ λ μ΄μμΈ κ²½μ°, νλλ§ μμ ν©λλ€.
- λΉ νμ λ°μ΄ν°λ₯Ό μμ νλΌλ μ°μ°μ΄ μ£Όμ΄μ§ κ²½μ°, ν΄λΉ μ°μ°μ 무μν©λλ€.
λ¬Έμ νμ΄
- my solution
import heapq
def solution(operations):
result = []
for i in operations:
x = i.split()
if x[0] == "I": # μ«μ μ½μ
heapq.heappush(result, int(x[1]))
elif x[0] == "D":
if x[1] == "-1": # μ΅μκ° μμ
if len(result)!=0:
heapq.heappop(result)
else: # μ΅λκ° μμ
temp = []
for j in result: # μ΅λ ν λ§λ€κΈ°
heapq.heappush(temp, -int(j))
if len(temp) != 0: # λΉμ΄μμ§ μμΌλ©΄ μμ
heapq.heappop(temp)
result = []
for j in temp: # μλλλ‘
heapq.heappush(result, -j)
answer=[]
if len(result) == 0: #νκ° λΉμ΄μμΌλ©΄
answer = [0, 0]
else: # λΉμ΄μμ§ μμΌλ©΄
k = heapq.heappop(result) # μ΅μκ°
temp = []
for j in result: # μ΅λ ν
heapq.heappush(temp, -j)
answer.append(-heapq.heappop(temp)) # μ΅λκ°
answer.append(k) # μ΅μκ°
return answer
1) splitμ ν΅νμ¬ λΆλ¦¬νμ¬ λͺ λ Ήμ΄κ° I μΌ λ, D μΌ λλ₯Ό ꡬλΆνμ¬ κ΅¬ν
μκ°π€
Level 3μ΄μμ§λ§ ν¬κ² μ΄λ ΅μ§ μμλ λ¬Έμ μλ€. λ λ²¨μ΄ λμ λ¬Έμ ν΄λ¦νκΈ° μ΄λ €μ μ λΏ...
μ΅κ·Όμ heapqμ λνμ¬ λ¬Έμ λ₯Ό νμ΄λ΄€λ κ²μ΄ ν¬κ² λμμ΄ λμλ€.
μμμ μ½λ μ€λͺ μ΄ μ§§μλ κ²λ, heapqλ§ μλ©΄ μ½κ² ν μ μμ κ±°λΌ μκ°νκΈ° λλ¬Έμ΄λ€.
λ΄κ° μκ°νκΈ°μ μ΄ λ¬Έμ μ ν¬μΈνΈλ
1) heapq μ¬μ©
2) μ΅μ ν, μ΅λ ν
μΈ κ² κ°λ€. λ€ννλ μ΅μ ν, μ΅λ νμ ꡬνν μ€ μκΈ°μ 빨리 ν΄κ²°ν μ μμλ€.
νμ§λ§, μ΄μ§ μλ¬Έμ μ΄ λλ κ²μ, 'μ΅μ νμ΄ κ΅¬νλ μνμμ μ΅λ νμ ꡬνν λ
λͺ¨λ μμμ κ°μ κ°μ Έμ μ΅λ νμΌλ‘ λ€μ ꡬννλ λ°©λ²λ°μ μλκ°?'μλ€.
μ‘°κΈ λ 곡λΆν΄λ΄μΌκ² λ€π₯
λ¬Έμ λ₯Ό νλ©΄μ μ»μ κ²
1. heapq
2. μ΅λ ν, μ΅μ ν
μΆμ²: νλ‘κ·Έλλ¨Έμ€ μ½λ© ν μ€νΈ μ°μ΅, https://programmers.co.kr/learn/challenges