λ¬Έμ μ€λͺ
μ΄μ€ μ°μ μμ νλ λ€μ μ°μ°μ ν μ μλ μλ£κ΅¬μ‘°λ₯Ό λ§ν©λλ€.
λͺ λ Ήμ΄μμ ν(λμ΄)
I μ«μ | νμ μ£Όμ΄μ§ μ«μλ₯Ό μ½μ ν©λλ€. |
D 1 | νμμ μ΅λκ°μ μμ ν©λλ€. |
D -1 | νμμ μ΅μκ°μ μμ ν©λλ€. |
μ΄μ€ μ°μ μμ νκ° ν μ°μ° operationsκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, λͺ¨λ μ°μ°μ μ²λ¦¬ν ν νκ° λΉμ΄μμΌλ©΄ [0,0] λΉμ΄μμ§ μμΌλ©΄ [μ΅λκ°, μ΅μκ°]μ return νλλ‘ solution ν¨μλ₯Ό ꡬνν΄μ£ΌμΈμ.
μ νμ¬ν
- operationsλ κΈΈμ΄κ° 1 μ΄μ 1,000,000 μ΄νμΈ λ¬Έμμ΄ λ°°μ΄μ λλ€.
- operationsμ μμλ νκ° μνν μ°μ°μ λνλ
λλ€.
- μμλ “λͺ λ Ήμ΄ λ°μ΄ν°” νμμΌλ‘ μ£Όμ΄μ§λλ€.- μ΅λκ°/μ΅μκ°μ μμ νλ μ°μ°μμ μ΅λκ°/μ΅μκ°μ΄ λ μ΄μμΈ κ²½μ°, νλλ§ μμ ν©λλ€.
- λΉ νμ λ°μ΄ν°λ₯Ό μμ νλΌλ μ°μ°μ΄ μ£Όμ΄μ§ κ²½μ°, ν΄λΉ μ°μ°μ 무μν©λλ€.
μ μΆλ ₯ μ
operations | return |
["I 16", "I -5643", "D -1", "D 1", "D 1", "I 123", "D -1"] | [0,0] |
["I -45", "I 653", "D 1", "I -642", "I 45", "I 97", "D 1", "D -1", "I 333"] | [333, -45] |
μ μΆλ ₯ μ μ€λͺ
μ μΆλ ₯ μ #1
- 16κ³Ό -5643μ μ½μ ν©λλ€.
- μ΅μκ°μ μμ ν©λλ€. -5643μ΄ μμ λκ³ 16μ΄ λ¨μμμ΅λλ€.
- μ΅λκ°μ μμ ν©λλ€. 16μ΄ μμ λκ³ μ΄μ€ μ°μ μμ νλ λΉμ΄μμ΅λλ€.
- μ°μ μμ νκ° λΉμ΄μμΌλ―λ‘ μ΅λκ° μμ μ°μ°μ΄ 무μλ©λλ€.
- 123μ μ½μ ν©λλ€.
- μ΅μκ°μ μμ ν©λλ€. 123μ΄ μμ λκ³ μ΄μ€ μ°μ μμ νλ λΉμ΄μμ΅λλ€.
λ°λΌμ [0, 0]μ λ°νν©λλ€.
μ μΆλ ₯ μ #2
- -45μ 653μ μ½μ ν μ΅λκ°(653)μ μμ ν©λλ€. -45κ° λ¨μμμ΅λλ€.
- -642, 45, 97μ μ½μ ν μ΅λκ°(97), μ΅μκ°(-642)μ μμ ν©λλ€. -45μ 45κ° λ¨μμμ΅λλ€.
- 333μ μ½μ ν©λλ€.
μ΄μ€ μ°μ μμ νμ -45, 45, 333μ΄ λ¨μμμΌλ―λ‘, [333, -45]λ₯Ό λ°νν©λλ€.
νμ΄ μ½λ
import heapq
def solution(operations):
min_heap = []
max_heap = []
for ops in operations:
alpha, num = ops.split()
if alpha == 'I':
heapq.heappush(min_heap, int(num))
heapq.heappush(max_heap, -int(num))
else:
if len(min_heap) > 0:
if num == '1':
val = heapq.heappop(max_heap) * -1
min_heap.remove(val)
heapq.heapify(min_heap)
else:
val = heapq.heappop(min_heap) * -1
max_heap.remove(val)
heapq.heapify(max_heap)
if min_heap and max_heap:
answer = [-heapq.heappop(max_heap), heapq.heappop(min_heap)]
else:
answer = [0,0]
return answer
λ¨μν μ΄μ€ μ°μ μμ νλ₯Ό λ§λλ λ¬Έμ μλ€.
νμ΄μ¬μ heapqλ₯Ό ν΅ν΄μ μ΅λνκ³Ό μ΅μνμ ꡬμ±ν μ μλ€.
heapq.heappush(list, element) : νμ νΉμ±μ μ μ§νλ©΄μ μμλ₯Ό μ½μ νλ ν¨μ, min_heapμ κΈ°μ€μΌλ‘ λ§λ€μ΄μ Έ μλ€.
heapq.heappop(list) : νμ 루νΈλ Έλ λ°ν, λλ¨Έμ§ κ΅¬μ‘° heapify μ§ν
heapq.heapify(list) : νμ΄ μλ 리μ€νΈλ₯Ό ν κ΅¬μ‘°λ‘ λ³ν.
μ΄λ elementμ μμ μ²λ¦¬λ₯Ό ν΄μ£Όκ³ , κ°μ κΊΌλΌ λ λ€μ μμ μ²λ¦¬λ₯Ό ν΄μ£Όλ©΄ μ΅λ νμ²λΌ μ¬μ©ν μ μκΈ° λλ¬Έμ
μμ κ°μ΄ μ½λλ₯Ό μμ±ν μ μμλ€.
ν μ€νΈ μΌμ΄μ€κ° μ‘°κΈ λΉμ½ν λ¬Έμ μΈ κ² κ°κΈ°λ νλ€..
'π μ½λ©ν μ€νΈ λλΉ : PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] νν (level2, python) (0) | 2022.09.09 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] κ΄νΈ νμ νκΈ° (level2, python) (0) | 2022.09.09 |
[νλ‘κ·Έλλ¨Έμ€] μ μ μΌκ°ν (level3, python) (0) | 2022.09.09 |
[νλ‘κ·Έλλ¨Έμ€] H-Index (level2, python) (0) | 2022.09.09 |
[νλ‘κ·Έλλ¨Έμ€] νλ ¬μ κ³±μ (level2, python) (0) | 2022.09.09 |