올바른 괄호

Jamie·2022년 2월 26일
0
post-thumbnail

문제

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어

"()()" 또는 "(())()" 는 올바른 괄호입니다.
")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 truereturn 하고, 올바르지 않은 괄호이면 falsereturn 하는 solution 함수를 완성해 주세요.

제한사항
문자열 s의 길이 : 100,000 이하의 자연수
문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예
s answer
"()()" true
"(())()" true
")()(" false
"(()(" false
입출력 예 설명
입출력 예 #1,2,3,4
문제의 예시와 같습니다.

풀이

function solution(s) {
    // (,)로 구성된 객체를 하나 선언한다
    // (가 나오면 stack에 넣어주고
    // )가 나오면 stack에서 (를 하나 뺀다
    // 다 돌았는데 stack의 길이가 0일경우 true, 그외의 경우는 false를 리턴한다

    const stack = [];
    const obj = {
        "(": ")",
    };

    for (let bracket of s) {
        let top = stack[stack.length - 1];
        if (obj[bracket]) {
            stack.push(bracket);
        } else {
            if (obj[top] === bracket) {
                stack.pop();
            } else {
                return false;
            }
        }
    }

    return stack.length === 0;
}

✅ 전에 풀었던 유형과 비슷하지만 조금 헷갈려서 다시 공부했다.
이 방법은 괄호가 여러가지 유형이 있어도 성립이 되는 코드이기 때문에 앞으로 유용하게 쓰일 것 같다.

profile
공부하고 비행하다 개발하며 여행하는 frontend engineer

0개의 댓글