π€ νμ΄ μ½λ
import heapq
from collections import deque
def solution(jobs):
# jobs : [μμ
μ΄ μμ²λλ μμ , μμ
μ μμμκ°]
answer = []
job_queue = deque(sorted(jobs, key=lambda x : x[0]))
heap = []
time = 0
while job_queue or heap:
# μμ
νμμ μ€νκ°λ₯ν νμΌλ‘ μ΄λ
while job_queue and job_queue[0][0] <= time:
start, during = job_queue.popleft()
# μμ μκ° (μ°μ μμ), μμ μ§μ
heapq.heappush(heap, [during, start])
if heap:
use_time, start = heapq.heappop(heap)
cost = use_time + time - start
answer.append(cost)
time += use_time
else:
time += 1
return sum(answer) // len(answer)
π€ λ¬Έμ νμ΄
μ£Όμν΄μΌ ν μ μ΄ μ’ λ§μ λ¬Έμ μμ΅λλ€.
- μ£Όμ΄μ§λ jobμ΄ μμ μ΄ μμ²λλ μμ μΌλ‘ μ λ ¬λμ΄ λ€μ΄μ€μ§ μμλ€λ μ
- μμ μ μμ² λΆν° μ’ λ£κΉμ§ 걸리λ μκ°μ νκ· μ κ³μ°νκΈ° μν΄μ, λμ€ν¬ 컨νΈλ‘€λ¬κ° μΌνκ³ μμ§ μμ λλ κ³μ°νλ©΄ μλλ€λ μ
- μ°μ μμλ, μμμκ°μ΄ 짧μ μλ‘ λμ΅λλ€.
- μμ μ΄ μ€νλκ³ μμ§ μμ κ²½μ°μλ λ¨Όμ μμ²μ΄ λ€μ΄μ¨ μμ λΆν° μνν©λλ€. (μμμκ°μ΄ μ°μ μμ, λ€μ μ°μ μμλ μμ²μ΄ λ€μ΄μ¨ μκ°)
λ°λΌμ μ°μ μμ μμ² μμ μΌλ‘ μ λ ¬ν ν, queueμ 보κ΄νμ΅λλ€.
νμ¬ λμ€ν¬ 컨νΈλ‘€λ¬κ° μ€νλ μ μλ μμ λ€μ λν΄μλ heapμ 보κ΄μ νκ³ ,
νμ¬ μκ°μ timeμ΄λΌλ λ³μλ‘ κ΄λ¦¬νμ΅λλ€.
μμ§ μμ²μκ°μ΄ λμ§ μμ queueμ λ¨μμκ±°λ μμ§ μ€νμ΄ κ°λ₯μ νμ§λ§ μμ§ μ€ννμ§ μμ μμ μ΄ heapμ λ¨μμλ€λ©΄ κ³μν΄μ λ‘μ§μ λ°λ³΅ν©λλ€.
μ°μ , job_queueμμ μ€ν κ°λ₯ν μμ μ λͺ¨λ λ½μλ λλ€. heapμ λ£μ λλ, μ°μ μμλ₯Ό κ³ λ €ν΄μ λ£μ΄μΌνλλ° μκ°λ³΄λ€ λ¨μνκ²λ, μ°μ μμλ 'μμ μκ°'μ΄κ³ , μ°¨μ°μ μμλ μμ²μ΄ λ€μ΄μ¨ μκ°μ λλ€.
λ§μ½ heapμμ μ€νν μ μλ μμ μ΄ μλ€λ©΄,
heapμμ κΊΌλ΄μ΄ μμ μκ°μ κ³μ°νκ³ , νμ¬ μκ°μ μμ μκ°λ§νΌ κ°±μ ν©λλ€.
λ§μ½ μ€νν μ μλ μμ μ΄ μλ€λ©΄, timeμ 1μ΄ λλ € λ°λ³΅ν©λλ€.
'π μ½λ©ν μ€νΈ λλΉ : PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] λ©μ©‘ν μ¬κ°ν (level2, python) (0) | 2023.04.11 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] μ¬νκ²½λ‘ (level3, python) (1) | 2023.04.11 |
[νλ‘κ·Έλλ¨Έμ€] μ λ ₯λ§μ λλ‘ λλκΈ° (level2, python) (0) | 2023.04.10 |
[νλ‘κ·Έλλ¨Έμ€] λ€μ μλ ν° μ μ°ΎκΈ° (level2, python) (0) | 2023.04.10 |
[νλ‘κ·Έλλ¨Έμ€] μ°μ λΆλΆ μμ΄ ν©μ κ°μ (level2, python) (0) | 2022.10.14 |