[programmers] 디스크 컨트롤러

KwonSC·2022년 5월 10일
0

programmers - Python

목록 보기
10/23
post-thumbnail

https://programmers.co.kr/learn/courses/30/lessons/42627


Code

import heapq

def solution(jobs):
    answer = 0; now = 0; size = len(jobs); wait = []
    heapq.heapify(jobs)
    while(jobs or wait):
        while(jobs and jobs[0][0] <= now):
            start, time = heapq.heappop(jobs)
            heapq.heappush(wait, [time, start])
        if (wait):
            time, start = heapq.heappop(wait)
        else:
            start, time = heapq.heappop(jobs)
        now = start + time if (start > now) else now + time
        answer += now - start
    return answer // size 

Solution

wait는 현재 시간에서 가능한 일, answer는 각 작업에서 요청부터 종료까지 걸린시간, now는 현재 시간이다. jobs를 힙화 시킨후 while문을 도는데 종료 조건은 waitjobs가 둘다 존재하지 않을때이다. jobs에서 현재 가능한 일이 존재하면 wait에 집어넣고 wait가 존재하면 wait에서 꺼내고 아니면 jobs에서 꺼내 nowanswer를 계산하고 마지막에 answer의 평균을 리턴

0개의 댓글