かっこを回転


https://programmers.co.kr/learn/courses/30/lessons/76502

#include
#include
#include
#include
using namespace std;
int solution(string s) {
int answer = 0;
deque<char> dTemp;
for (int i = 0; i < s.size(); i++)
{
    dTemp.push_back(s[i]);
}

int iLoop = dTemp.size();
for (int i = 0; i < iLoop; i++)
{
    deque<char> dTemp1 = dTemp;
    stack<char> stk;
    int flag(0);
    for (int j = 0; j < dTemp1.size(); j++)
    {
        if (dTemp[j] == '(' || dTemp[j] == '[' || dTemp[j] == '{')
        {
            flag++;
            stk.push(dTemp[j]);
        }
        else if (stk.size() != 0 && stk.top() == '(' && dTemp1[j] == ')') stk.pop();
        else if (stk.size() != 0 && stk.top() == '{' && dTemp1[j] == '}') stk.pop();
        else if (stk.size() != 0 && stk.top() == '[' && dTemp1[j] == ']') stk.pop();
    }
    if (stk.size() == 0 && flag>0) answer++;
    char cTemp = dTemp[0];
    dTemp.pop_front();
    dTemp.push_back(cTemp);
}

return answer;
}
よくあるカッコ変形の問題.
かっこはスタック形式で展開され、
内部ロジックを忘れないで