開発プログラマJS機能


問題の説明


機能の開発と導入を行うには導入は使い捨てであればあるほどよい.
各機能については、100%に達すると導入できますが、各タスクに必要な工数は異なります.
配置は順番に行うこともできます.仕事の攻守が速くても、前の仕事が完成していなければ、外に出られないので、前の仕事が完成したら、一緒に外に出ることができます.
これにより、同じ日に配布された配布数を返すことができます.

第1回の解


簡単にmapを使って問題を解く.
各開発者の攻守に要する時間を測定し,count個数を測定して返す.
方法は複雑ですが、この方法も正しいと思います.
テストは最後の問題を除いてすべて合格した.
function solution(progresses,speeds){
  let bepo = [];
  progresses.map((x,i)=>{
    let count =0;
    while(x<=100){
      x=x+speeds[i]
      count++
    }
    bepo.push(count)
  })
  
  let finished= bepo[0];
  let answer =[];
   let count =0;
	bepo.map((x,i)=>{
  

           
    if(finished<x){
  
      answer.push(count)
      finished=x
      count=1
    }else if(finished>=x){
      count++ 
    }
    if(bepo.length-1===i){
      
      answer.push(count)
    }
  })
  return (answer)
}

二次解


問題も間違っていたので,もう一度やろうと決心した.
スタックとQの問題はヒントのようなので、スタックとQで解決しようと努力します.
function solution(progresses,speeds){
  let bepo = [];
  progresses.map((x,i)=>{
    let finished = 100-x
    finished=Math.ceil(finished/speeds[i])
    bepo.push(finished)
  })
  
  let count =1;
  let answer =[];
  let time= bepo[0];
  for(let i=1;i<bepo.length+1;i++){
    	if(time>=bepo[i]){
        count++
      
      }else{
        
        answer.push(count)
        count=1;
        time=bepo[i];
      }

    
  }

  return answer
}
1ラウンド目よりコードを減らしました.
しかし、方向性はまだ悪くない.攻守時間を見つけた後.
攻守時間を比較することでcntを増やします.
スタックで1つ詰めて1つ取り出したい場合は、アレイにもう1つ必要だと思います.
変数を大きな値に変える形で問題を解く.
結果は通過できます.