ディスクコントローラ(プログラマ)


問題の説明

  • [ 작업 요청 시점, 작업 시간]の2次元配列作業
  • ジョブの要求から終了までの所要時間の平均値は、返却する.
  • 要求された順序で作業しているので、最低限の時間は保証できません.
  • せいげんじょうけん

  • ハードディスクが動作しない場合は、要求を受けたジョブを先に処理します.
  • リクエストの時点が0以上1000以下
  • 勤務時間が1以上1000以下
  • 問題を解く

    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リクエスト時間に変更します.