[JS/Problem Solving] Get Target Number

Task

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

Count how many combinations of adding and subtracting each element of the given array results the given target number.

Solution

function solution(numbers, target) {
    let answer = 0;
    let nums = [...numbers];
    const tar = target;
    
    // Recursive function
    const getTarget = (arr, num, count) => {
        // Get sum at every loop
        let sum = arr.reduce((a, c) => a + c, 0);

        // If sum matches target, increase answer
        if(sum === num) {
            answer++;
        }

        // For every item in array, change to negative value, recursion
        for (let i = count; i < arr.length; i++) {
            let temp = arr.slice();
            temp[i] *= -1;
            getTarget(temp, num, i+1);
        }
        
    }
    
    getTarget(nums, tar, 0);
    return answer;
}