function solution(s){
const stack=[];
for (let i=0;i<s.length;i++){
if (stack[stack.length-1]==='(' && s[i]===')'){
stack.pop();
}else{
stack.push(s[i]);
}
}
return !stack.length;
}
stack에는 아직 짝을 찾지 못한 괄호를 넣어줄 것이다.
s 배열을 for문으로 순회하면서 stack에 마지막으로 들어간 괄호가 (이고 현재 순회중인 s값이 )라면 stack.pop()을 하고 s는 다음 순회값으로 넘어간다.
stack의 마지막 값이 )인 경우를 고려하지 않는 이유는 )는 (와 만나서 짝을 이루고 (를 stack에서 빼내주어야 하는 값이기 때문이다. )이 stack에 들어가면 그 어떠한 경우에도 짝을 이룰 수 없게 된다.
만약 이 조건을 만족하지 못하게 되면 stack에는 s[i]값이 들어가게 된다.
for문을 통한 순회가 완전히 끝났음에도 stack이 비어있지 않다면 괄호 짝이 맞지 않다는 것을 의미하므로 !stack.length를 리턴하여 정답을 맞출 수 있다.