괄호 변환

📝 괄호 변환

🖥 나의 JS 코드

첫번째 시도

올바른 괄호 문자열인지 체크하는 함수를 만들고
solution이라는 함수 자체를 재귀로 사용하여 문제를 해결

// 올바른 괄호 문자열인지 체크
function isCorrectBracket(str) {
    const stack = [];
    let open = 0;
    let close = 0;
    for (let i = 0; i < str.length; i++) {
        if (str[i] === '(') {
            stack.push('(');
            open++;
        } else {
            stack.pop();
            close++;
        }
    }
    if (stack.length === 0 && open === close)
        return true;
    else
        return false;
}
function solution(p) {
    // 괄호 열고, 닫기 구분
    let open = 0;
    let close = 0;
    // 빈 문자열 -> 재귀 종료 1
    if (!p) {
        return '';
    }

    for (let i = 0; i < p.length; i++) {
        // 괄호 개수 파악하기
        if (p[i] === '(') open += 1;
        else close += 1;
        // 열고 닫는 괄호가 같은 횟수로 등장했을때, 
        if (open === close) {
            // u가 올바른 괄호 문자열 일때, 3
            if (isCorrectBracket(p.slice(0, i + 1))) {
                // 3 - 1
                return p.slice(0, i + 1) + solution(p.slice(i + 1));
            } else {
                // u가 올바른 괄호 문자열이 아닐때,
                // 4 -1 ~ 3
                let answer = '(' + solution(p.slice(i + 1)) + ')';
                // 4 - 4
                for (let j = 1; j < i; j++) {
                    if (p[j] === '(') answer += ')';
                    else answer += '(';
                }
                // 4-5
                return answer;
            }
        }
    }

}

좋은 웹페이지 즐겨찾기