
** 딱 보고 스택이나 큐로 풀 수 있는 문제라고 생각하였고 나중에 나온 괄호가 먼저 닫힐 때도 있으므로 스택을 사용하였다.
#include <iostream>
#include <string>
#include <vector>
#include <stack>
using namespace std;
int solution(string s) {
int answer = 0,len = s.length() ;
if(len%2 == 1) return 0; // 문자열 길이가 홀수면 0 리턴
stack<char> st; //괄호를 넣을 스택 선언
for(int j = 0 ; j < len ;j++){
int total = 0 ;
for(int i = 0 ; i < len ; i++){
if(s[i] == '[' || s[i] == '{' || s[i] == '('){
st.push(s[i]);
}
else if(s[i] == ']' && st.top() == '[') {
st.pop();
total++;
}else if( s[i] == '}' && st.top() == '{' ){
st.pop();
total++;
}else if( s[i] == ')' && st.top() == '('){
st.pop();
total++;
}else{
break;
}
}
if(total == (len/2) && st.empty()){
//스택이 비어있고 괄호들의 짝이 전부 맞다면 answer +1
answer ++;
}
//문자열 회전
s = s.substr(1,len-1)+s[0];
}
return answer;
}