주어진 수 배열을 이용해서 서로 더하고 빼서 target넘버가 나오는 경우의 수를 구하는 문제
문제 : https://programmers.co.kr/learn/courses/30/lessons/43165
재귀로 해결했다.
프로그래머스에서 answer이 function스코프에 있기 때문에 solution안에 함수를 선언해 answer,numbers,target변수를 사용했다.
dfs(인덱스,현재 인덱스까지의 계산결과)의 함수를 만들었다.
같은 인덱스 값에서 아래의 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;
}