반응형
DFS를 활용해서 문제를 해결했다.
numbers 배열에 들어 있는 각 원소를 노드라고 생각한다면 각 노드는 +노드, -노드의 두 분기로 나눠지게 된다.
numbers가 [1,2,3]이라고 했을 때 실제 방문하는 노드는 1, 2, 3이 되는게 아니라
1 -> 2 -> 3
1 -> 2 -> -3
1 -> -2 -> 3
1 -> -2 -> -3
... 처럼 노드가 달라진다.
function solution(numbers, target) {
var answer = 0;
dfs(0, 0);
return answer;
function dfs(nodeIndex, totalNumber) {
if (nodeIndex === numbers.length) {
if (totalNumber === target) answer++;
return;
}
// 플러스
dfs(nodeIndex + 1, totalNumber + numbers[nodeIndex]);
// 마이너스
dfs(nodeIndex + 1, totalNumber - numbers[nodeIndex]);
}
}