[プログラマー]レベル2:機能開発(日付6)



問題の説明


プログラマチームは機能強化を実行しています.各機能は、進捗が100%の場合にサービスに反映されます.
また、各機能の開発速度が異なるため、後の機能は前の機能の開発より先に、後の機能は前の機能の導入時に一緒に導入される可能性があります.
まず、ソリューション関数を完了し、特定の整数配列の進捗状況(必要に応じて配置される順序)と整数配列速度(タスクごとの開発速度)のときに、各配置にどれだけの機能があるかを返します.

せいげんじょうけん

  • タスクの数(進捗、速度配列長)は100を超えません.
  • 作業の進捗は100の自然数を下回っています.
  • の動作速度は100以下の自然数である.
  • 導入では、1日に1回しか導入できないと仮定し、1日の終了時に導入します.たとえば、開発の進捗状況が95%のタスクの速度が1日4%の場合、導入は2日後に完了します.
  • 問題を解く

    function solution(progresses, speeds) {
        var answer = [];
        let workingDays = [];
        let deployFnCount = [];
        
        for (let i = 0; i < progresses.length; i++) {
            while (progresses[i] < 100) {
                progresses[i] += speeds[i];
                
                if (!workingDays[i]) workingDays[i] = 0;
                workingDays[i] += 1;
            }
        }
        
        for (let i = 0; i < workingDays.length; i++) {
            if (!deployFnCount[i]) deployFnCount[i] = 1;
            if (!workingDays[i]) {
                deployFnCount[i] = 0;
                continue;
            }
    
            for (let j = i + 1; j < workingDays.length; j++) {
                if (workingDays[i] >= workingDays[j]) {
                    deployFnCount[i] += 1;
                    workingDays[j] = null;
                } else {
                    break;
                }
            }
        }
    
        answer = deployFnCount.filter((count) => count);
        
        return answer;
    }
    無知に解けた.後で他の人の草を見て包装し直します.
    最初は1.2.4.5万件のテストケースに失敗していたので、WorkingDayは同じことを考えていませんでした...