[プログラマー]予算😄
[プログラマー]予算
https://programmers.co.kr/learn/courses/30/lessons/12982
最初のコード
どのテストケースに適していないか考えてみましょう.
各部門が申請した金額が予算より高い場合、テストが3回間違っていることがわかります.
テスト1、4でエラーが発生しました.
完璧ではないコード.
最終コード
3つ目は、申請金額より予算が小さいテストケース(テスト3に属する)
4つ目は、初回申請金額が予算と同じテストケース(テスト1,3に属する)
内蔵関数reduceのコードを使用します(効率はやや低い).
繰り返すたびにreduceチェックを呼び出し、popも必要なので効率が悪い・・・(woorim960)
https://programmers.co.kr/learn/courses/30/lessons/12982
最初のコード
function solution(d, budget) {
var answer = [];
var sum = 0;
let arr = d.sort((a,b) => a-b);
for(let i = 0; i < arr.length; i++){
sum += arr[i];
answer.push(arr[i]);
if(sum + arr[i+1] > budget)
break;
}
return answer.length;
}
テスト3番が間違っています.どのテストケースに適していないか考えてみましょう.
各部門が申請した金額が予算より高い場合、テストが3回間違っていることがわかります.
function solution(d, budget) {
var answer = [];
var sum = 0;
let arr = d.sort((a,b) => a-b);
for(let i = 0; i < arr.length; i++){
if(arr[i] < budget){
sum += arr[i];
answer.push(arr[i]);
}
if(sum + arr[i+1] > budget)
break;
}
return answer.length;
}
しかし、予算が申請金額を下回った場合、例外処理をしました.テスト1、4でエラーが発生しました.
完璧ではないコード.
最終コード
function solution(d, budget) {
var answer = [];
var sum = 0;
let arr = d.sort((a,b) => a-b);
for(let i = 0; i < arr.length; i++){
if(arr[i] <= budget){ // 작거나 같다 처리를 해야했다.
sum += arr[i];
answer.push(arr[i]);
}
if(sum + arr[i+1] > budget)
break;
}
return answer.length;
}
追加されたテストケース3つ目は、申請金額より予算が小さいテストケース(テスト3に属する)
4つ目は、初回申請金額が予算と同じテストケース(テスト1,3に属する)
内蔵関数reduceのコードを使用します(効率はやや低い).
繰り返すたびにreduceチェックを呼び出し、popも必要なので効率が悪い・・・(woorim960)
function solution(d, budget) {
d.sort((a, b) => a - b);
while (d.reduce((a, b) => (a + b), 0) > budget) d.pop();
return d.length;
}
Reference
この問題について([プログラマー]予算😄), 我々は、より多くの情報をここで見つけました https://velog.io/@bgo517/프로그래머스-예산テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol