프로그래머스 level3 디스크 컨트롤

Kim Yongbin·2023년 9월 7일
0

코딩테스트

목록 보기
46/162

Problem

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

Solution

import heapq

def solution(jobs):
    answer, time = 0, 0
    total_jobs = len(jobs)
    while len(jobs) > 0:
        ready_queue = sorted([job for job in jobs if job[0] <= time], key=lambda x:x[1])
        if len(ready_queue) == 0:
            time += 1
            continue
        
        job = ready_queue[0]
        time += job[1]
        answer += time - job[0]
        jobs.remove(job)
    
    return answer // total_jobs

대기시간의 평균을 최소화하기 위해서는 현재 작업할 수 있는 목록 중 소요시간이 가장 적은 것들을 뽑아서 처리하면 된다.

따라서, 현재 작업할 수 있는 job들을 ready_queue 넣고, 해당 리스트를 소요시간을 기준으로 정렬하여 가장 소요시간이 적은 요소를 구하였다.

Reference

profile
반박 시 여러분의 말이 맞습니다.

0개의 댓글