https://school.programmers.co.kr/learn/courses/30/lessons/76502
관건은 올바른 문자열을 어떻게 확인할 것인가 였다.
Stack을 활용해서 확인하는 방식이였다.
회전하는 방식은
S,charAt( (i+offset) % s.length )
나머지를 활용하여 구할 수 있다.
import java.util.*;
class Solution {
public int solution(String s) {
int count = 0;
for(int offset = 0; offset < s.length(); offset++){
if(check(s, offset))
count++;
}
return count;
}
public boolean check(String s, int offset){
Stack<Character> stack = new Stack<>();
for(int i = 0; i < s.length(); i++){
char c = s.charAt((i+offset) % s.length());
switch(c){
case '(' -> stack.push(')');
case '{' -> stack.push('}');
case '[' -> stack.push(']');
case ')', '}', ']' -> {
if(stack.isEmpty()) return false;
if(stack.pop() != c) return false;
}
}
}
return stack.isEmpty();
}
}