λ¬Έμ μ€λͺ
μ΄μ€ μ°μ μμ νλ λ€μ μ°μ°μ ν μ μλ μλ£κ΅¬μ‘°λ₯Ό λ§ν©λλ€.
λͺ λ Ήμ΄μμ | ν(λμ΄) |
I μ«μ | νμ μ£Όμ΄μ§ μ«μλ₯Ό μ½μ ν©λλ€. |
D 1 | νμμ μ΅λκ°μ μμ ν©λλ€. |
D -1 | νμμ μ΅μκ°μ μμ ν©λλ€. |
μ΄μ€ μ°μ μμ νκ° ν μ°μ° operationsκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, λͺ¨λ μ°μ°μ μ²λ¦¬ν ν νκ° λΉμ΄μμΌλ©΄ [0,0] λΉμ΄μμ§ μμΌλ©΄ [μ΅λκ°, μ΅μκ°]μ return νλλ‘ solution ν¨μλ₯Ό ꡬνν΄μ£ΌμΈμ.
μ ν μ¬ν
- operationsλ κΈΈμ΄κ° 1 μ΄μ 1,000,000 μ΄νμΈ λ¬Έμμ΄ λ°°μ΄μ λλ€.
- operationsμ μμλ νκ° μνν μ°μ°μ λνλ λλ€. μμλ “λͺ λ Ήμ΄ λ°μ΄ν°” νμμΌλ‘ μ£Όμ΄μ§λλ€. μ΅λκ°/μ΅μκ°μ μμ νλ μ°μ°μμ μ΅λκ°/μ΅μκ°μ΄ λ μ΄μμΈ κ²½μ°, νλλ§ μμ ν©λλ€.
- λΉ νμ λ°μ΄ν°λ₯Ό μμ νλΌλ μ°μ°μ΄ μ£Όμ΄μ§ κ²½μ°, ν΄λΉ μ°μ°μ 무μν©λλ€.
μ
μΆλ ₯ μ
operations | return |
["I 16","D 1"] | [0,0] |
["I 7","I 5","I -5","D -1"] | [7,5] |
μ
μΆλ ₯ μ μ€λͺ
μμ #1: 16μ μ½μ
ν μ΅λκ°μ μμ ν©λλ€. λΉμ΄μμΌλ―λ‘ [0,0]μ λ°νν©λλ€.
μμ #1: 7, 5, -5λ₯Ό μ½μ
ν μ΅μκ°μ μμ ν©λλ€. μ΅λκ° 7, μ΅μκ° 5λ₯Ό λ°νν©λλ€.
λμ μ루μ
import heapq
def solution(operations):
queue = []
for op in operations:
if len(queue) == 0:
if op.startswith("I"):
heapq.heappush(queue, int(op[2:]))
else: pass
else:
if op.startswith("I"):
heapq.heappush(queue, int(op[2:]))
elif op.startswith("D") & op.endswith("-1"):
heapq.heappop(queue)
else:
queue.remove(heapq.nlargest(1, queue)[0])
try:
return [heapq.nlargest(1, queue)[0], heapq.nsmallest(1, queue)[0]]
except:
return [0, 0]
λ°°μ΄ μ
νμ΄μ¬μ νμ μ λ§ life-saver μ΄λ€. μκ³ λ¦¬μ¦μ νλ€κ° λͺ¨λ₯΄λ λ¬Έμ κ° λμ€λ©΄ heapq λͺ¨λμ ν λ²μ―€ λ€μ μ¬ λ΄λ μ’μ κ²μ΄λ€.
'π» DEV > γ΄ problems' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] 2018 KAKAO BLIND RECRUITMENT : νλ μ¦4λΈλ‘ (0) | 2021.10.06 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] κΉμ΄/λλΉ μ°μ νμ(DFS/BFS) : λ¨μ΄ λ³ν (0) | 2021.09.27 |
[νλ‘κ·Έλλ¨Έμ€] ν΄μ : λ² μ€νΈμ¨λ² (0) | 2021.07.13 |
[νλ‘κ·Έλλ¨Έμ€] ν : λμ€ν¬ 컨νΈλ‘€λ¬ (0) | 2021.07.13 |
[νλ‘κ·Έλλ¨Έμ€] μ λ ¬ : H-Index (0) | 2021.07.13 |
λκΈ