타겟 넘버

첫번째 풀이

function solution(numbers, target) {
  let count = 0;
  function recur(sum, list) {
    if (!list.length) {
      if (sum == target) {
        count++;
      }
      return;
    }
    const next = list[0];
    recur(sum - next, list.slice(1));
    recur(sum + next, list.slice(1));
  }
  recur(0, numbers.slice());
  return count;
}

두번째 풀이

function solution(numbers, target) {
  let count = 0;
  const length = numbers.length;
  function recur(sum, idx) {
    if (idx == length) {
      if (sum == target) {
        count++;
      }
      return;
    }
    recur(sum - numbers[idx], idx + 1);
    recur(sum + numbers[idx], idx + 1);
  }
  recur(0, 0);
  return count;
}
  • 의외로 변수 할당 하나 차이만 해도 생각보다 실행 시간에서 차이를 보이네...

0개의 댓글