[アルゴリズム]プログラマ-ターゲット番号
4453 ワード
https://programmers.co.kr/learn/courses/30/lessons/43165
問題の説明
n個の非負の整数.この数字を適当に加算または減算してターゲット番号を作成したいです.たとえば、[1,1,1,1,1,1]で数値3を作成するには、次の5つの方法があります.
-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3
使用可能な数値の配列番号、ターゲット番号のターゲットをパラメータとして指定したときに、適切に数値を加算して減算して、ターゲット番号を作成する方法の数を返します.
解答方法
1.ランダムに加減を実現する方法を考えます!
2.再帰関数がプラスの場合、すべてのマイナス記号が呼び出されます.
3.getAnswer関数(getAnswer関数以外)を2回呼び出す理由は、0番目のindex値が負の場合も考慮するからです!
問題の説明
n個の非負の整数.この数字を適当に加算または減算してターゲット番号を作成したいです.たとえば、[1,1,1,1,1,1]で数値3を作成するには、次の5つの方法があります.
-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3
使用可能な数値の配列番号、ターゲット番号のターゲットをパラメータとして指定したときに、適切に数値を加算して減算して、ターゲット番号を作成する方法の数を返します.
解答方法
1.ランダムに加減を実現する方法を考えます!
2.再帰関数がプラスの場合、すべてのマイナス記号が呼び出されます.
3.getAnswer関数(getAnswer関数以外)を2回呼び出す理由は、0番目のindex値が負の場合も考慮するからです!
function solution(numbers, target) {
let count = 0;
function getAnswer(cur, isPositive, index){
isPositive ? cur+=numbers[index] : cur-=numbers[index];
if(index === numbers.length-1){
if(cur === target){
count++;
}
return;
}
getAnswer(cur, true, index+1);
getAnswer(cur, false, index+1);
}
getAnswer(0, true, 0);
getAnswer(0, false, 0);
return count;
}
Reference
この問題について([アルゴリズム]プログラマ-ターゲット番号), 我々は、より多くの情報をここで見つけました https://velog.io/@dolarge/알고리즘-프로그래머스-타겟넘버テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol