Valid Parentheses

원지렁·2023년 3월 2일
0

알고리즘 정복기

목록 보기
3/12
post-thumbnail

Valid Parentheses

문제

주어지는 문자열 s의 괄호가 올바르게 닫혔는지 판별하여 true/false를 리턴해야 함

문제의 핵심

  • stack을 활용하여 괄호의 짝이 맞는지 확인하면서 그 외 예외처리를 해주어야 함
    1) 열린 괄호로 시작하며 s.length가 홀수가 아닌지
    2) 열린 괄호와 닫힌 괄호의 갯수가 일치하는지
var isValid = function(s) {
    let stack = [];
    let openCount = 0;
    let closedCount = 0;

    const bracketMap = (open) => {
        if(open === '('){
            return ')';
        } 
        else if(open === '{'){
            return '}';
        } 
        else {
            return ']';
        }
    }

    if(s[0] === ')' || s[0] === '}' || s[0] === ']' || s.length % 2 === 1){
        return false;
    }

    for(let i = 0; i < s.length; i++){
        if(s[i] === '(' || s[i] === '{' || s[i] === '['){
            stack.push(s[i]);
            openCount++;
        } 
        else {
            if(bracketMap(stack.pop()) === s[i]){
                closedCount++;
                continue;
            }
            return false;
        }
    }
    if(openCount === closedCount){
        return true
    }
    return false
};
profile
새싹 개발자 지렁이의 벨로그입니다.

0개의 댓글