https://programmers.co.kr/learn/courses/30/lessons/76502?language=javascript
괄호 문제 -> 스택 사용
거의 공식이라 스택을 사용해서 푸는 것 까진 성공했는데 다른 사람의 풀이를 보니 내꺼보다 훨씬 간단해서 배울게 많았던 문제였다.
괄호를 닫을 때는 무조건 같은 종류여야만 한다. 그게 아니면 틀린 문자열.
function solution(s) {
var answer = 0;
for (let x = 0; x < s.length; x++){
// 앞에껄 뒤로 붙일 때 slice 를 써서 간단하게 해결한다.
let rotated = s.slice(x) + s.slice(0, x);
let stack = []
for (let i = 0; i < rotated.length; i++)
{
// TIP) 꺼낸 괄호와 스택의 맨 위에 있는 괄호가 같은 종류면
// 맨 위의 괄호를 stack 에서 pop 한다.
let top = stack[stack.length - 1] || null;
let char = rotated[i];
if (top === '(' && char === ')') stack.pop();
else if (top === '[' && char === ']') stack.pop();
else if (top === '{' && char === '}') stack.pop();
else stack.push(char); // stack 이 비었을 경우 그냥 push.
}
if (!stack.length) answer++;
}
return answer;
}