프로그래머스/lv2

프로그래머스 : 괄호 회전하기 (lv2) C++

TIN9 2022. 10. 6.
반응형
#include <string>
#include <vector>
#include <stack>

using namespace std;

int solution(string s) {
    int answer = 0;
    
    size_t StringSize = s.size();
    
    while(StringSize - 1 > 0)
    {
        stack<char> sSave;
        
        for(size_t i = 0; i < s.size(); ++i)
        {
            if(s[0] == ')' || s[0] == '}' || s[0] == ']')
            {
                sSave.push(s[i]);
                break;
            }
            if(sSave.empty())
            {
                sSave.push(s[i]);
                continue;
            }
            else
            {
                char Top = sSave.top();

                if(Top == '(' && s[i] == ')')
                {
                    sSave.pop();
                }
                else if(Top == '{' && s[i] == '}')
                {
                    sSave.pop();
                }
                else if(Top == '[' && s[i] == ']')
                {
                    sSave.pop();
                }
                else
                {
                    sSave.push(s[i]);
                }
            }
        }
        
        if(sSave.empty())
        {
            ++answer;
        }
        
        int Size = s.size();
        
        char SaveChar = s[0];
        for(size_t i = 0; i < Size; ++i)
        {
            s[i] = s[i + 1];
        }
        s[Size - 1] = SaveChar;
        
        --StringSize;
    }
    
    return answer;
}
반응형

댓글