문제 링크
function solution(numbers, target) {
var answer = 0;
function dfs(depth, sum) {
if (depth === numbers.length) {
if (sum === target) {
answer++
}
return
} else {
dfs(depth + 1, sum + numbers[depth])
dfs(depth + 1, sum - numbers[depth])
}
}
dfs(0,0)
return answer;
}
트리 모양을 생각해서 왼쪽 노드는 +를 해주고 오른쪽 노드는 -를 한다.
재귀 호출을 반복하며 depth가 주어진 배열의 길이와 같은 경우 값을 target과 비교한다.
(첫번째 값을 기준으로 왼쪽만 트리를 그려보았다)
