코딩테스트
[Python] 프로그래머스 / 디스크 컨트롤러
LOEWEN
2024. 10. 3. 21:02
728x90
두 개의 queue를 관리하라
하라는 대로 하면 되지만, 생각보다 까다롭고 섬세한 문제이다. 이게 또 은근히 실전 코테에서는 어려운 요소이다.
import heapq
from collections import deque
def solution(jobs):
n = len(jobs)
jobs.sort()
jobs = deque(jobs)
total_time, current_time = 0, 0
queue = []
while jobs or queue :
while jobs and jobs[0][0] <= current_time :
requested, duration = jobs.popleft()
heapq.heappush(queue, [duration, requested])
if queue :
current_duration, current_requested = heapq.heappop(queue)
current_time += current_duration
total_time += current_time - current_requested
else :
current_time = jobs[0][0]
return total_time//n