우선 Stack을 사용해서 문자열의 글자 한개씩 넣고 그 스택의 끝글자와 입력되는 글자가 한 쌍이면 Stack을 pop()시킬수 있도록 생각했다.
2중 for문으로 문자열 회전시키면서 0부터 인덱스를 찾아나가면 된다.
그리고 substring을 통해 문자를 회전시키면 된다.
그림 참고
public static int solution(String s){
int answer = 0;
//Stack<Character> queue = new Stack<>();
for(int i=0; i<s.length(); i++) {
Stack<Character> queue = new Stack<>();
//System.out.println("s : "+s);
for (int j = 0; j < s.length(); j++) {
//System.out.println(s.charAt(j));
if (queue.size() != 0) {
if (queue.peek() == '[' && s.charAt(j) == ']') {
queue.pop();
} else if (queue.peek() == '(' && s.charAt(j) == ')') {
queue.pop();
} else if (queue.peek() == '{' && s.charAt(j) == '}') {
queue.pop();
} else {
queue.add(s.charAt(j));
}
} else if (queue.size() == 0) {
queue.add(s.charAt(j));
}
//System.out.println(queue);
}
if(queue.size()==0){
answer++;
}
char start = s.charAt(0);
s = s.substring(1,s.length());
s += start;
}
//System.out.println("answer : "+answer);
return answer;
}