TIL 20210708

Jean Deluge·2021년 7월 8일
0

타겟넘버

힌트는 깊이/넓이 탐색

각 원소에 -1, +1 을 곱해야하는 두가지 경우의 수가 생기므로,
깊이 탐색으로 했다.

그리고 탐색을 멈추기 위해서 깊이(= 주어진숫자를 다 사용)를 다 탐색 하면 멈추도록 해야한다.
탐색하면서 더할때, 원하는 값이 나올때마다 경우의수가 증가한다.

그래서 recursive 함수를 만들기로 했고,
매개변수로 깊이와, 현재의 합을 계속 가지고 있어야했다.

function solution(numbers, target) {
    let answer = 0;
    
    let dfs = (depth, sum) => {
        if(depth === numbers.length){
            if(sum === target){
                answer += 1;
            }
            return
        }
        
        dfs(depth + 1, sum + numbers[depth])
        dfs(depth + 1, sum - numbers[depth])
    }
    
    dfs(0, 0);
    
    return answer;
}
profile
node.js , rudyonrails개발자

0개의 댓글