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

일단 해볼게·2023년 2월 24일
0

프로그래머스

목록 보기
47/106

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

import heapq

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

solution([[0, 3], [1, 9], [2, 6]])

heapq는 최소힙

profile
시도하고 More Do하는 백엔드 개발자입니다.

0개의 댓글