https://programmers.co.kr/learn/courses/30/lessons/42627
아래는 내가 푼 코드인 힙이랑 우선순위 큐니 뭐니 걍 정신 사나운듯 담 문제는 프붕이가 풀자고 했던 네트워크나 풀어야지
function solution(jobs) {
let result = 0;
const length = jobs.length;
jobs.sort((a, b) => { // task 정렬 요청 시간, 작업시간
if (a[0] < b[0]) {
return -1;
} else if (a[0] === b[0]) {
return a[1] < b[1] ?
-1 :
1;
}
return 1;
});
const queue = [];
let time = jobs[0][0];
while (jobs.length > 0) { // jobs을 모두 비울때 까지 반복
queue.push(jobs.shift());
while (queue.length > 0) {// queue를 모두 비울때까지 반복
while (jobs.length > 0 && time >= jobs[0][0]) { // 경쟁 task 필터링
queue.push(jobs.shift());
}
queue.sort((a, b) => a[1] - b[1]); // task 정렬 소요시간
const [start, end] = queue.shift();
if (time >= start) { // task 응답시간 및 총 소요시간 계산
time === start ?
result += end :
result += time - start + end;
time += end;
} else {
result += end;
time = start + end;
}
}
}
return parseInt(result / length); // 평균 응답 시간 계산
}
댓글 0