Muscardinus

디스크 컨트롤러 본문

알고리즘 문제/[프로그래머스] Lv3

디스크 컨트롤러

Muscardinus 2021. 2. 15. 22:37
728x90

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

 

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

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

programmers.co.kr

function solution(jobs) {
    let answer = 0;
    let j = 0, time = 0;
    const priorityQueue = [];
    
    jobs.sort((a,b) => a[0] - b[0]);
    while (j < jobs.length || priorityQueue.length) {
        if (j < jobs.length && time >= jobs[j][0]) { //큐에 쌓기
            priorityQueue.push(jobs[j++]);
            priorityQueue.sort((a,b) => a[1] - b[1]);
            continue;
        }
        if (priorityQueue.length) {
            time += priorityQueue[0][1];
            answer += time - priorityQueue[0][0];
            priorityQueue.shift();
        } else time = jobs[j][0];
    }
    return parseInt(answer / jobs.length);
}
728x90

'알고리즘 문제 > [프로그래머스] Lv3' 카테고리의 다른 글

등굣길  (0) 2021.02.19
정수 삼각형  (0) 2021.02.19
베스트 앨범  (0) 2021.02.14
섬 연결하기  (0) 2021.02.13
풍선 터트리기  (0) 2021.02.12
Comments