less than 1 minute read

디스크 컨트롤러

힙을 이용한 대표적인 문제 이다.

import heapq
def solution(jobs):
    answer = 0
    jobs.sort(reverse = True)
    for e in jobs:
        e[0], e[1] = e[1], e[0]
    queue = []
    time = []
    real_time = 0
    while jobs or queue:
        if not queue:
            heapq.heappush(queue, jobs.pop())
        temp = heapq.heappop(queue)
        if real_time < temp[1]:
            real_time = temp[1]

        real_time += temp[0]
        time.append(real_time - temp[1])

        for i in reversed(range(len(jobs))):
            if jobs[i][1] <= real_time:
                heapq.heappush(queue, jobs.pop())
    answer = sum(time)//len(time)
    return answer