Programmers. 디스크 컨트롤러
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42627 풀이 우선 순위대로 문제를 처리하므로 힙을 써야하는 것은 명확하다. 하지만, 이 힙을 어떻게 다루느냐가 더 중요한 문제이기 때문에 사실상 힙보다는 단순 구현 문제에 가깝다. 코드 import heapq def solution(jobs): jobs.sort(key = lambda x: x[0]) waitQueue = [] finished = 0 currentTime = 0 jobIdx = 0 totalReturnTime = 0 while finished < len(jobs): while jobIdx < len(jobs) and jobs[jobIdx][0] <= currentTime: requestTime, duration = jobs[jobIdx] heapq.heappush(waitQueue, (duration, requestTime)) jobIdx += 1 if waitQueue: duration, requestTime = heapq.heappop(waitQueue) currentTime += duration returnTime = currentTime - requestTime totalReturnTime += returnTime finished += 1 else: currentTime = jobs[jobIdx][0] return totalReturnTime // len(jobs)