힌트는 깊이/넓이 탐색
각 원소에 -1, +1 을 곱해야하는 두가지 경우의 수가 생기므로,
깊이 탐색으로 했다.
그리고 탐색을 멈추기 위해서 깊이(= 주어진숫자를 다 사용)를 다 탐색 하면 멈추도록 해야한다.
탐색하면서 더할때, 원하는 값이 나올때마다 경우의수가 증가한다.
그래서 recursive 함수를 만들기로 했고,
매개변수로 깊이와, 현재의 합을 계속 가지고 있어야했다.
function solution(numbers, target) {
let answer = 0;
let dfs = (depth, sum) => {
if(depth === numbers.length){
if(sum === target){
answer += 1;
}
return
}
dfs(depth + 1, sum + numbers[depth])
dfs(depth + 1, sum - numbers[depth])
}
dfs(0, 0);
return answer;
}