ディスクコントローラ(プログラマ)
7123 ワード
問題の説明
[ 작업 요청 시점, 작업 시간]
の2次元配列作業せいげんじょうけん
問題を解く function solution(jobs) {
let answer = 0;
let time = 0;
let j = 0;
const priorityJobs = jobs.sort((a, b) => a[0] - b[0]);
const priorityQueue = [];
while (j < priorityJobs.length || priorityQueue.length !== 0)
{
if (priorityJobs.length > j && time >= priorityJobs[j][0]) {
priorityQueue.push(priorityJobs[j++]);
console.log(priorityQueue);
priorityQueue.sort((a, b) => a[1] - b[1]);
continue;
}
if (priorityQueue.length !== 0) {
time += priorityQueue[0][1];
answer += time - priorityQueue[0][0];
priorityQueue.shift();
console.log(priorityQueue);
} else time = priorityJobs[j][0];
}
return Math.floor(answer / priorityJobs.length);
}
+再解読時の私のコード
チェックポイント
function solution(jobs) {
let answer = 0;
let time = 0;
let j = 0;
const priorityJobs = jobs.sort((a, b) => a[0] - b[0]);
const priorityQueue = [];
while (j < priorityJobs.length || priorityQueue.length !== 0)
{
if (priorityJobs.length > j && time >= priorityJobs[j][0]) {
priorityQueue.push(priorityJobs[j++]);
console.log(priorityQueue);
priorityQueue.sort((a, b) => a[1] - b[1]);
continue;
}
if (priorityQueue.length !== 0) {
time += priorityQueue[0][1];
answer += time - priorityQueue[0][0];
priorityQueue.shift();
console.log(priorityQueue);
} else time = priorityJobs[j][0];
}
return Math.floor(answer / priorityJobs.length);
}
time
リクエスト時間より小さいジョブを優先リストに入れる.answer
(요청시점을 뺀 시간의 합) / 작업의 수
を結果値に戻します.time
より遅い場合はtime
リクエスト時間に変更します.Reference
この問題について(ディスクコントローラ(プログラマ)), 我々は、より多くの情報をここで見つけました https://velog.io/@vsnm25/디스크-컨트롤러프로그래머스テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol