ターゲット番号


📝 ターゲット番号



🖥 マイJSコード


初めての試み


dfsを使用して解決されたコード
コンセプトはここ
function solution(numbers, target) {
    var answer = 0;
 
    
    function dfs(numbers, depth){
     
      if(numbers.length === depth){
          let sum= 0;
          for(const number of numbers){
          sum += number;
          }
          if(sum === target)
              answer++;
          return
      }
      else{ 
        //음수 , 양수를 바꿔가면서 numbers를 저장하고, 깊이를 늘려가며 탐색을 진행
          numbers[depth] *= -1;
          dfs(numbers, depth+1);

          numbers[depth] *= -1;
          dfs(numbers, depth+1);

      }
	}
    dfs(numbers, 0);
    return answer;
}

2回目の試み

function solution(numbers, target) {
    let count = 0;
    // 인자로 숫자 배열과 더한 값을 재귀로 넘겨받음
    function dfs(arrs, sum) {
        // 빈배열이면 깊이탐색이 끝난 것임을 의미
        if (arrs.length === 0) {
            // 더한 값이 target 과 같으면 count에 1을 더해줌
            if (target === sum)
                count++;
            // 재귀 종료
            return;
        }
        // 부호 바꿔가면서 깊이탐색 !!
        dfs(arrs.slice(1, arrs.length), sum + arrs[0]);
        dfs(arrs.slice(1, arrs.length), sum + (-1) * arrs[0]);
    }
    // 깊이 탐색 호출
    dfs(numbers, 0)
    // 결과값 반환
    return count;
}