codingTest

[프로그래머스] 타겟 넘버 - DFS

에밀오구 2023. 5. 3. 23:54
  1. 타겟 넘버https://school.programmers.co.kr/learn/courses/30/lessons/43165
function solution(numbers, target) {
  let count = 0;

  function dfs(result, depth) {
    if (depth === numbers.length) {
      if (result === target) count += 1;
    } else {
      dfs(result - numbers[depth], depth + 1);
      dfs(result + numbers[depth], depth + 1);
    }
  }

  // result, depth
  dfs(0, 0);

  return count;
}

-갓지현님의 그림 설명-

function solution(numbers, target) {
  let count = 0;

  function dfs(result, depth) { // 0 0 
    if (depth === numbers.length) { //끝까지 내려간 것 
      if (result === target) count += 1; //끝의 값이 target 과 같으면 카운트 
    } else {
      dfs(result - numbers[depth], depth + 1);//dfs(0-첫번째값,2)
      dfs(result + numbers[depth], depth + 1);//dfs(0+첫번째값,2)
    }
  }

  // result, depth
  dfs(0, 0);

  return count;
}