function solution(numbers, target) {
let answer = 0;
dfs(0,0)
function dfs(depth, sum){
if(depth === numbers.length){
if(sum === target){
answer++
}
return
}
// 동시 다발적으로 수행
dfs(depth + 1, sum + numbers[depth])
dfs(depth + 1, sum - numbers[depth])
}
return answer;
}
처음 접하는 재귀함수였는데, 두개나 들어가서 이해하는데 어려움이 있었다.
이제껏 단방향 코드만 짜다가 동시다발적으로 터지는 코드를 접하니 컴퓨터의 위대함을 깨닫는다..
dfs(0,0)
을 신호탄으로 삼아, 깊이가 5에 다달았을 때 target과 값이 같다면 answer++해주고, 다르다면 그자리에서 함수를 끝내버린다.