본문 바로가기
Algorithm/프로그래머스

Level2. 타겟 넘버(DFS/BFS) - JavaScript

by 강깅꽁 2021. 4. 19.

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]);
    }
}