https://school.programmers.co.kr/learn/courses/30/lessons/76502
Stack 으로 해결하였다
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
StringBuilder sb = new StringBuilder(s);
for(int i = 0; i < s.length(); ++i)
{
if(isRight(sb.toString()))
answer++;
sb.append(sb.charAt(0));
sb.delete(0, 1);
//System.out.println(sb.toString());
}
return answer;
}
public boolean isRight(String s)
{
Stack<Character> stack = new Stack();
for(int i = 0; i < s.length(); ++i)
{
char cur = s.charAt(i);
if(cur=='[')
{
stack.push(cur);
}
else if(cur==']')
{
if(stack.isEmpty())
return false;
if(stack.peek() != '[')
return false;
stack.pop();
}
else if(cur=='{')
{
stack.push(cur);
}
else if(cur=='}')
{
if(stack.isEmpty())
return false;
if(stack.peek() != '{')
return false;
stack.pop();
}
else if(cur=='(')
{
stack.push(cur);
}
else if(cur==')')
{
if(stack.isEmpty())
return false;
if(stack.peek() != '(')
return false;
stack.pop();
}
}
if(stack.isEmpty()==false)
return false;
return true;
}
}