문제풀이/기타

* [파이썬] [힙] Pro 디스크 컨트롤러

승무_ 2022. 2. 13. 17:57

문제

https://programmers.co.kr/learn/courses/30/lessons/42627?language=python3 

 

코딩테스트 연습 - 디스크 컨트롤러

하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를

programmers.co.kr

 

코드

import heapq

def solution(jobs):
    start=-1
    answer,now,i=0,0,0
    q=[]
    
    while i<len(jobs):
        # 현재 시점에서 처리할 수 있는 작업을 heap에 저장
        for j in jobs:
            if start<j[0]<=now:
                heapq.heappush(q,(j[1],j[0]))
        # 처리할 작업이 있는 경우
        if len(q)>0:
            cur=heapq.heappop(q)
            start=now
            now+=cur[0]
            # 작업 요청시간부터 종료시간까지의 시간 계산
            answer+= now-cur[1]
            i+=1        
        # 처리할 작업이 없는 경우 다음 시간을 넘어감
        else:
            now+=1
    return answer//len(jobs)