kakasoo

[node.js] 삼총사 본문

프로그래밍/알고리즘 풀이

[node.js] 삼총사

카카수(kakasoo) 2023. 6. 4. 16:57
반응형
function* combinations(elements, selectNumber) {
    for (let i = 0; i < elements.length; i++) {
        if (selectNumber === 1) {
            yield [elements[i]];
        } else {
            const fixed = elements[i];
            const rest = elements.slice(i + 1);

            for (const a of combinations(rest, selectNumber - 1)) {
                yield [fixed, ...a];
            }
        }
    }
}

function solution(number) {
    const answer = [];

    /**
     * number 중 3개의 요소를 조합한 후, 그 조합의 합이 0이 되는 케이스를 찾는다.
     */
    for (const a of combinations(number, 3)) {
        if (a.reduce((acc, cur) => acc + cur, 0) === 0) {
            answer.push(a);
        }
    }

    return answer.length;
}
반응형