우선 작업요청시간을 내림차순으로 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를 만들어서 요청시간이 지난 작업들을 다 넣어주고, 작업시간이 짧은 순서대로 처리해주면 된다는 생각을 바로 하여서 나름 실력이 오른것같다고 느껴졌다.