[프로그래머스] 코딩테스트 연습 - 76

krkorklo·2022년 2월 23일
0

프로그래머스

목록 보기
76/78

level 3 - 디스크 컨트롤러

각 작업에 대해 [작업이 요청되는 시점, 작업의 소요시간]을 담은 2차원 배열 jobs가 매개변수로 주어질 때, 작업의 요청부터 종료까지 걸린 시간의 평균을 가장 줄이는 방법으로 처리하면 평균이 얼마가 되는지 return 하도록 solution 함수를 작성해주세요.

입출력 예시
jobs : [[0, 3], [1, 9], [2, 6]]
-> 9

function solution(jobs) {
    var answer = 0;
    var pre = 0;
    var len = jobs.length;
    jobs.sort((a, b) => {
        if(a[0] == b[0]) return a[1] - b[1];
        else return a[0] - b[0];
    });
    
    for(var i=0; i<len; i++) {
        var queue = jobs.filter((j) => j[0] <= pre);
        queue.sort((a, b) => a[1] - b[1]);
        
        var tmp;
        if (queue.length == 0) {
            tmp = jobs.shift();
            pre = tmp[0];
        }
        else {
            tmp = queue.shift();
            jobs.splice(jobs.indexOf(tmp), 1);
        }
        pre = pre + tmp[1];
        answer += (pre - tmp[0]);
    }
    return Math.floor(answer / len);
}

0개의 댓글