[프로그래머스] 알고리즘 Kit - 올바른 괄호

ss_kim·2024년 11월 12일

<코드>

function solution(s){
    var answer = true;
    const stack = {open:0, value:[]};
    
    stack.value = s.split('').map((item) => {
        if(item === '(') {
            stack.open++
            return 1
        } else {
            stack.open--
            if(stack.open < 0) return answer = false
            return -1
        }
    })
    
    if(stack.value.reduce((a,c) => a+c, 0) !== 0) return false

    return answer;
}



<풀이>

괄호를 나누어 순회하면서 '('는 1로, ')'는 -1로 바꾼다.

앞에서부터 더해가면 괄호가 열릴 때는 1씩 더해지고, 닫히면 1씩 빠짐
-> 괄호는 계속해서 열 수 있기 때문에 양수로 증가하는 것은 상관 없지만 음수가 되면 올바른 구조가 아니고, 최종적으로 0이 되어야 열고 닫는 개수가 맞음

profile
프론트엔드 개발자

0개의 댓글