여름의 서재

[프로그래머스] 디스크 컨트롤러 (파이썬) 본문

알고리즘/프로그래머스

[프로그래머스] 디스크 컨트롤러 (파이썬)

엉아_ 2022. 1. 7. 19:48
728x90

📕 문제

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

 

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

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

programmers.co.kr

 

💡 풀이법

import heapq

def solution(jobs):
    l = len(jobs)
    heapq.heapify(jobs)
    first = heapq.heappop(jobs)
    time = first[0] + first[1]
    answer = first[1]
    while jobs:
        ready = []
        heapq.heapify(ready)
        for i in jobs:
            if time >= i[0]:
                heapq.heappush(ready,i[::-1])

        if ready == [] :
            fast = heapq.heappop(jobs)
            answer += fast[1]
            time = fast[0] + fast[1]
        else:
            fast = heapq.heappop(ready)[::-1]
            time += fast[1]
            answer += time - fast[0]
            jobs.remove(fast)
                
    return answer // l

 

Comments