[プログラマー]機能開発問題のJavaScriptアルゴリズム
5736 ワード
[プログラマー]機能開発問題のJavaScriptアルゴリズム
https://programmers.co.kr/learn/courses/30/lessons/42586
Q.機能開発
プログラマチームは機能強化を実行しています.各機能は、進捗が100%の場合にサービスに反映されます.
また、各機能の開発速度が異なるため、後の機能は前の機能の開発より先に、後の機能は前の機能の導入時に一緒に導入される可能性があります.
まず、ソリューション関数を完了し、特定の整数配列の進捗状況(必要に応じて配置される順序)と整数配列速度(タスクごとの開発速度)のときに、各配置にどれだけの機能があるかを返します.
せいげんじょうけん
I/O例
progressesspeedsreturn[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 = [];
var dayArr = progresses.map((a,i)=> Math.ceil((100-a)/speeds[i])); //각 프로그레스 완성 일수 배열 만들기
var cnt = 1; // 자기자신은 cnt 되지 않으므로 cnt 1로 설정
var newIndex = 0;
for(let i=1; i<dayArr.length; i++){
if(dayArr[newIndex]>=dayArr[i]){
cnt ++;
}else {
answer.push(cnt);
cnt = 1;
newIndex = i;
}
if(i===dayArr.length-1){
answer.push(cnt);
}
}
return answer;
}
Reference
この問題について([プログラマー]機能開発問題のJavaScriptアルゴリズム), 我々は、より多くの情報をここで見つけました https://velog.io/@dlzagu/프로그래머스-기능개발-문제-자바스크립트-알고리즘テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol