[Programmers] 타겟 넘버

Joohyun·2021년 7월 15일

Algorithm

목록 보기
14/16
post-thumbnail

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/43165

제출 코드

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

풀이 방법

트리 모양을 생각해서 왼쪽 노드는 +를 해주고 오른쪽 노드는 -를 한다.
재귀 호출을 반복하며 depth가 주어진 배열의 길이와 같은 경우 값을 target과 비교한다.
(첫번째 값을 기준으로 왼쪽만 트리를 그려보았다)

profile
#Frontend Developer #Vue #Javascript #Typescript

0개의 댓글