https://school.programmers.co.kr/learn/courses/30/lessons/76502
괄호 검사는 보통 스택을 활용하는 데, 직관적인 방법으로 풀어보았다.
const isValid = (s) => {
const arr = ['[]', '{}', '()']
for (let i=0; i<s.length-1;) {
const temp = s[i] + s[i+1]
if (arr.includes(temp)) {
s = s.substring(0, i) + s.substring(i+2, s.length)
if (i!==0) i --
}
else {
i ++
}
}
return s? false : true
}
function solution(s) {
var answer = 0;
for (let i=-1; i<s.length-1; i++){
s = s.substring(1, s.length+1) + s.substring(0, 1)
// console.log(s)
if (isValid(s)) answer ++
}
return answer;
}
function isValid(s) {
const stack = [];
const pairs = {
")": "(",
"}": "{",
"]": "[",
};
for (const c of s) {
if (c === "(" || c === "{" || c === "[") {
stack.push(c);
} else if (c === ")" || c === "}" || c === "]") {
if (stack.length === 0 || stack.pop() !== pairs[c]) {
return false;
}
}
}
return stack.length === 0;
}
function solution(s) {
let answer = 0;
const n = s.length;
for (let i = 0; i < n; i++) {
if (isValid(s)) {
answer++;
}
s = s.substring(1) + s[0];
}
return answer;
}