[프로그래머스] Lv3. 디스크 컨트롤러- JavaScript

이상돈·2023년 7월 7일
0
post-thumbnail

문제분류 : 코팅테스트 연습

난이도 : Level 3

출처 : 프로그래머스 - 디스크 컨트롤러

문제

제한사항

📌 내가 생각한 풀이

우선 작업요청시간을 내림차순으로 sort한 후 Time변수를 만들어 요청시간보다 time이 더 크면, queue에 넣는다. 그 다음 queue에서는 걸리는 시간이 짧은순으로 내림차순정렬한다. 이 후 pop하여 작업들을 완료해주고 시간을 더해준다.
function solution(jobs) {
    var answer = 0;
    let count = jobs.length;
    jobs.sort((a,b)=>b[0]-a[0]);
    let queue = [];
    let time = 0;
    let sum = 0;
    while(queue.length || jobs.length){
        while(jobs.length && time >= jobs[jobs.length-1][0]){
            let popped = jobs.pop();
            queue.push(popped);
        }
        if(queue.length){
            queue.sort((a,b)=> b[1]-a[1]);
            let completed = queue.pop();
            time+=completed[1];
            sum += time-completed[0];
        }else{
            time++;
        }
    }
    return Math.floor(sum/count)   
}

📌 느낀점

비교적 Lv3 치고는 쉽게 풀렸다. queue를 만들어서 요청시간이 지난 작업들을 다 넣어주고, 작업시간이 짧은 순서대로 처리해주면 된다는 생각을 바로 하여서 나름 실력이 오른것같다고 느껴졌다.

profile
사람들의 더 나은 삶을 위한 개발자

0개의 댓글