https://school.programmers.co.kr/learn/courses/30/lessons/76502
다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다.
대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록 solution 함수를 완성해주세요.
function solution(s) {
let str = s;
let count = 0;
let stack = [];
for(let i = 0; i < s.length; i++){
str = str.slice(1,s.length)+str[0]; // 맨 앞자리 문자를 맨 뒷자리로 옮김
stack = [];
for(let j = 0; j < s.length; j++){
if(stack[stack.length-1]==='{' && str[j]==='}' ||
stack[stack.length-1]==='[' && str[j]===']'||
stack[stack.length-1]==='(' && str[j]===')' // 괄호 짝이 맞으면
)
stack.pop(); // stack에서 제거시켜주고
else{
stack.push(str[j]); // 아니면 stack에 추가
}
}
if(stack.length===0) count++; // stack 길이가 0이면 괄호 짝이 맞으므로 count
}
return count;
}
효율성 테스트 안하길래 이중 포문 돌림..
이번에도 냅다 for문이랑 if문 써서 해결했다 ^^;;;