<코드>
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이 되어야 열고 닫는 개수가 맞음