## 🌟 문제
[코딩테스트 연습 - 괄호 회전하기 \| 프로그래머스 스쿨](https://school.programmers.co.kr/learn/courses/30/lessons/76502)
## 🌟 풀이
s의 최대 길이가 1000으로 그렇게 크지 않아서 문제 그대로를 구현하면 되는 문제였다.
우선 s의 길이만큼 회전을 해 줘야 하니 s를 이어붙여서 회전 결과를 미리 만들어주었다.
```javascript
const sList = [...s, ...s];
```
그 다음에는 s 길이만큼의 범위를 오른쪽으로 옮겨가면서 (offset을 이용하는 for loop) 스택을 이용한 괄호 짝 맞추기를 해 줬다.
괄호 짝 맞추기 방법은 [[Lv1. 올바른 괄호]] 와 동일하게 여는 괄호는 스택에 넣어주고, 닫는 괄호는 스택의 top과 비교해주는 방법!
```javascript
function solution(s) {
let answer = 0;
const sList = [...s, ...s];
for (let start = 0; start < s.length; start++) {
const stack = [];
let isValid = true;
for (let offset = 0; offset < s.length; offset++) {
const c = sList[start + offset];
if (c === '(' || c === '[' || c === '{') {
stack.push(c);
} else {
const top = stack.pop();
if (!top) {
isValid = false;
break;
}
if (top === '(' && c === ')') continue;
if (top === '[' && c === ']') continue;
if (top === '{' && c === '}') continue;
isValid = false;
break;
}
}
if (isValid && stack.length === 0) answer++;
}
return answer;
}
```