Problem Solving/Programmers

[프로그래머스 / JS] 타겟 넘버 - Level 2

애송이개발자 2023. 4. 13. 11:51

🚩 문제 주소

 

 

📄 접근 방법

 

그래프 탐색 - DFS

 

더보기

DFS 함수

 

탈출 조건

depth가 주어진 numbers배열의 길이와 같아지면 재귀를 종료합니다.

그런데 종료하기전에 조건을 하나 판단합니다.

  • 지금까지 구한 숫자의 합이 주어진 target과 같다면 answer를 1 늘려줍니다.

종료 조건에 만족하지 않는다면 dfs 함수를 2번 씩 재귀 호출합니다.
depth를 1 늘려주고, 합에 숫자를 더하거나 뺍니다.

 


👨‍💻 나의 코드

function solution(numbers, target) {
    let answer = 0;
    
    const dfs = (depth, sum) => {
        if (depth === numbers.length) {
            if (sum === target) answer++;
            return;
        }
        dfs(depth+1, sum+numbers[depth]);
        dfs(depth+1, sum-numbers[depth]);
    }
    dfs(0, 0);
    
    return answer;
}