작성 코드 (1차 시도 / 통과)
function solution(numbers, target) {
let result = 0
const dfs = (idx, accr) => {
if (idx === numbers.length) return accr === target ? ++result : 1
dfs(idx + 1, accr + numbers[idx])
dfs(idx + 1, accr - numbers[idx])
}
return dfs(0, 0) || result
}
구현 로직 (DFS)
1. 재귀형 DFS 선언
2. numbers 배열을 하나씩 +한 값과 -한 값을 현재 축적값(accr)에 연산하고 다시 DFS로 진입.
3. numbers 의 마지막 값인 경우 target과 일치하면 결과를 +1
4. dfs 초기 실행 후 결과값 반환