スタック/キュー機能の開発

1491 ワード

まず、ソリューション関数を完了し、特定の整数配列の進捗状況(必要に応じて配置される順序)と整数配列速度(タスクごとの開発速度)のときに、各配置にどれだけの機能があるかを返します.
せいげんじょうけん
タスクの数(進捗、速度配列の長さ)は100個を超えません.
作業の進捗は100未満の自然数です.
動作速度が100以下の自然数.
導入は1日に1回しか行われず、1日の終了時に完了すると仮定します.たとえば、開発の進捗状況が95%のタスクの速度が1日4%の場合、導入は2日後に完了します.
I/O例
progresses speeds return
[93, 30, 55][1, 30, 5] [2, 1][95, 90, 99, 99, 80, 99] [1, 1, 1, 1, 1, 1][1, 3, 2]
I/O例説明
I/O例#1
最初の機能は93%、毎日1%の作業を完了し、7日以内に導入を完了できます.
2つ目の機能は30%を達成し、毎日30%の作業を完了できるため、3日間で導入を完了できます.ただし、前の機能はまだ完了していないため、最初の機能は導入の7日目に導入されます.
3つ目の機能は55%を達成し、1日5%の作業を完了できるため、9日以内に導入を完了できます.
これにより、7日目に2つの機能が導入され、9日目に1つの機能が導入されます.
I/O例#2
すべての機能は1日1%のタスクしか達成できないため、タスクが終了するまでの残りの日数はそれぞれ5日、10日、1日、1日、20日、1日です.前のすべての機能が完了していない場合は、機能を導入できません.
これにより、5日目に1つの機能、10日目に3つの機能、20日目に2つの機能が導入されます.
に答える
function solution(progresses, speeds) {
    var answer = [0];
    var newArr = [];
    for(var i = 0; i < progresses.length; i++) {
        var calc = Math.ceil((100 - progresses[i]) / speeds[i]);
        newArr.push(Math.ceil((100 - progresses[i]) / speeds[i]));
    }
    
    var max = newArr[0];
   for(var i = 0, j = 0; i < newArr.length; i++) {
       if (newArr[i] <= max){ 
           answer[j] += 1;
       } else {
           max = newArr[i];
           answer[++j] = 1;
       }
    }
    
    return answer;
}
//percent
//speeds
//newArr push 100 - progresses / speeds 
// check newArr max current
// max > current ? answer +=1