+1, -1을 재귀를 이용한 dfs로 계속 계산한다. depth가 length가 되면 종료하고, num이 target과 같은지 체크한다.
같으면 answer++ 다르면 return 0으로 종료한다.
function solution(numbers, target) {
var answer = 0;
//dfs 시작
const dfs = (num, depth) =>{
//만약 depth가 numbers.length만큼 반복했다면
if(depth === numbers.length){
num === target ? answer++ : null
return 0;
}else{
//아직 반복하지않았다면 bfs다시 시작
bfs(num+numbers[depth], depth+1);
bfs(num-numbers[depth], depth+1);
}
}
dfs(0,0)
return answer;
}
재귀를 이용한 dfs문제이다. 기본적이지만 푸는 방법을 모르면 엄청 오래걸릴 것 이다. 꼭 dfs 방식을 익혀두도록 하자