올바른 괄호 찾기
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻과 같다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 함수를 완성해야 한다.
s answer
"()()" true
"(())()" true
")()(" false
"(()(" false
const solution = (s) => {
var stack = [];
for (let i = 0; i < s.length; i++) {
stack.push(s[i]);
if (stack[stack.length - 1] === ")" && stack[stack.length - 2] === "(") {
stack.pop();
stack.pop();
}
}
return stack.length === 0 ? true : false;
};
Stack 구조를 생각하는 것이 핵심인 것 같다.
- push와 pop을 사용한다.
- 조건에 맞으면, 즉 짝이 알맞으면 pop을 두 번 사용해 배열에서 제거한다.