Oops, All Code!/🤯 Oops, My Algorithm!

꒰ྀི 11. LeetCode:: 괄호 생성

밍동망동 2024. 7. 23. 17:18

저작권 규정을 모르기 때문에 문제를 요약해 정리한다.

 

n쌍의 괄호를 사용해 올바르게 구성된 괄호의 모든 조합을 생성

 

문제를 해결하기 위해 백트래킹 알고리즘을 사용했다.

가능한 모든 괄호 조합을 시도하며, 올바르게 구성됐을 경우만 결과에 추가한다.

 

( ु ´͈ ᵕ `͈ )ु JS:: 백트래킹(Backtracking) 알고리즘

백트래킹(Backtracking) 개념가능한 모든 해결책을 탐색하면서 조건에 맞지 않으면 돌아가 다시 시도한다.문제 해결을 위한 모든 경우의 수를 고려하는 동시에,조건에 맞지 않는 경로라면 더 이상

404minda.tistory.com

 

조건
 - 열리는 괄호 '('는 n번 추가할 수 있다.
 - 닫히는 괄호 ')'는 열리는 괄호의 수보다 많아질 수 없다.
function generateParenthesis(n) {
    const result = [];

    function backtrack(current, open, close) {
        // 기저 조건: 현재 조합의 길이가 2n인지 확인
        if (current.length === 2 * n) {
            result.push(current);
            return;
        }

        // 열리는 괄호 추가 조건
        if (open < n) {
            backtrack(current + '(', open + 1, close);
        }

        // 닫히는 괄호 추가 조건
        if (close < open) {
            backtrack(current + ')', open, close + 1);
        }
    }

    backtrack('', 0, 0); 
    return result;
}