[programmers] Lv2. ターゲットJavascript|DFS(深度優先ナビゲーション)|protect-me


🕊 Link


Lv2. ターゲットJavascript番号
https://programmers.co.kr/learn/courses/30/lessons/43165

🧑🏻‍💻 Code(javascript)

function solution(numbers, target) {
  let answer = 0;
  let count = 0;
  function calc(x, value) {
    if (x < numbers.length) {
      calc(x + 1, value + numbers[x]);
      calc(x + 1, value - numbers[x]);
    } else {
      if (value === target) {
        answer++;
      }
    }
  }
  calc(0, 0);
  return answer;
}

💡 Solution


深度優先ナビゲーション(DFS)による解析
function solution(numbers, target) {
  let answer = 0;
  function calc(x, value) {
    if (x < numbers.length) {
      calc(x + 1, value + numbers[x]);
      calc(x + 1, value - numbers[x]);
      // number[x]를 더하는 경우와 빼는 경우를
      // 재귀적으로 호출하여 계속해서 가지를 뻗어 나감
    } else {
      if (value === target) {
        answer++;
      }
      // x의 값이 numbers.length과 같아지면
      // value 값과 target이 같은지 판단해서 count up
    }
  }
  calc(0, 0);
  return answer;
}

🔁 復習する

2021.09.01
function solution(nums, target) {
  let answer = 0;
  const LENGTH = nums.length

  const dfs = (value, depth) => {
    if (depth === LENGTH) {
      if (value === target) answer++
    } else {
      const num = nums[depth]
      dfs(value + num, depth + 1)
      dfs(value - num, depth + 1)
    }
  }

  dfs(0, 0)
  return answer
}

const nums = [1, 1, 1, 1, 1]
const target = 3
console.log(solution(nums, target))

👨🏻‍💻💭 Self Feedback

  • DFSでは、まず終了条件が見つかり、中間プロセスが考慮されます.
    最後のcountがいくらなのか混同しないでください.
    関数は
  • 2numbers.lengthに呼び出されたが、四半期中にelseが焼失したため、x5に減少した.
  • 22021.06.17-
  • が最初に作成されました.댓글 환영 질문 환영 by.protect-me