[리트코드] 39. Combination Sum




39. Combination Sum

리트코드

나의 풀이

/**
 * @param {number[]} candidates
 * @param {number} target
 * @return {number[][]}
 */
 var combinationSum = function (candidates, target) {
    candidates.sort((a, b) => a - b); // 오름차순 
    
    let answer = [];

    dfs([], 0, 0);

    /**
     * 
     * @param {number[]} path 현재 조합 
     * @param {number} sum 현재 합계
     * @param {number} index
     */
    function dfs(path, sum, index) {
        if(sum === target){
            answer.push(path);
            return;
        }
        
        for (let i = index; i < candidates.length; i++) {
            const el = candidates[i];
            if(sum + el <= target){
                dfs([...path, el], sum + el, i);
            }
        }
    }

    return answer;
};

이해했는데 어렵다. 다음에 다시 살펴보기