다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다.
대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록 solution 함수를 완성해주세요.
const checkStr = (arr) => {
let isVaild = true;
const pair = { "}": "{", "]": "[", ")": "(" };
let stack = [];
for (let cur of arr) {
if (pair[cur] === undefined) {
stack.push(cur);
} else {
if (stack[stack.length - 1] !== pair[cur]) {
isVaild = false;
}
stack.pop();
}
}
if (stack.length) {
isVaild = false;
}
return isVaild;
};
const solution = (s) => {
let answer = 0;
const arr = s.split("");
for (let i = 0; i < s.length; i++) {
if (checkStr(arr)) {
answer++;
}
arr.push(arr.shift());
}
return answer;
};
const s = "[](){}";
console.log(solution(s));