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

Kyle·2020년 12월 11일
0

problem solving

목록 보기
7/36

문제

주어진 수 배열을 이용해서 서로 더하고 빼서 target넘버가 나오는 경우의 수를 구하는 문제

문제 : https://programmers.co.kr/learn/courses/30/lessons/43165

해결방법

재귀로 해결했다.

프로그래머스에서 answer이 function스코프에 있기 때문에 solution안에 함수를 선언해 answer,numbers,target변수를 사용했다.

dfs(인덱스,현재 인덱스까지의 계산결과)의 함수를 만들었다.

  • 재귀 종료조건 : i가 numbers의 길이가 됐을 때 종료한다.
    이때 현재까지 계산결과인 sum과 target을 비교해서 같으면 answer++

같은 인덱스 값에서 아래의 2가지 방식으로 sum을 계산해준다.

  • 더했을 경우
  • 뺐을 경우

코드

function solution(numbers, target) {
  function dfs(i, sum) {
    if (i === numbers.length) {
      if (sum === target) answer++;
    } else {
      dfs(i + 1, sum + numbers[i]);
      dfs(i + 1, sum - numbers[i]);
    }
  }
  let answer = 0;
  dfs(0, 0);
  return answer;
}
profile
Kyle 발전기

0개의 댓글