PS/프로그래머스
[Level2][Javascript] 디스크 컨트롤러
returnzero
2022. 6. 25. 20:54
function solution(jobs) {
let n= jobs.length;
var answer = 0;
jobs.sort(function(a,b){
return a[0]-b[0]
});
// console.log(jobs); // [ [ 0, 3 ], [ 1, 9 ], [ 2, 6 ] ]
let current_time=0;
let Q=[];
let index=0;
while(index<n||Q.length>0){
if (index< n && jobs[index][0]<=current_time){
Q.push(jobs[index++]);
continue;
}
Q.sort(function(a,b){return a[1]-b[1]});
console.log(Q);
if( Q.length>0){
let [start, runtime]= Q.shift();
console.log(start,runtime,current_time, answer)
current_time+=runtime;
answer+= current_time-start
}
else{
current_time=jobs[index][0];
}
}
console.log(answer)
return Math.floor(answer/n);
}
Greedy알고리즘에 해당하는 문제이다.
Priority Queue가 Javascript에서는 지원되지 않는다는 문제점이 있어서 그리디를 사용해야 한다.