본문 바로가기
알고리즘/프로그래머스

[프로그래머스][자바스크립트][Level2] 타겟 넘버

by Benjamin_Choi 2021. 7. 20.

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

function solution(numbers, target) {
    var answer = {number: 0};
    
    f(numbers, 0, 0, answer, target, "+");
    f(numbers, 0, 0, answer, target, "-");
    
    return answer.number;
}

function f(numbers, idx, result, answer, target, calc) {
    if (calc === "+") {
        result += numbers[idx];
    } else if (calc === "-") {
        result -= numbers[idx];
    }
    
    if (numbers.length - 1 === idx) {
        if (result === target) {
            answer.number++;
        }
        return;
    }
    

    f(numbers, idx+1, result, answer, target, "+");
    f(numbers, idx+1, result, answer, target, "-");
    return;
}

재귀로 풀었다. 좀 넘기는 인자가 많긴했으나 로직은 잘 나왔다.

 

DFS로도 한 번 더 풀어봐도 좋을 것 같다. 

댓글