딱히 어렵진 않았는데 경우 생각하는게 귀찮았다.

string 변환에 최적화가 안된 느낌인데 잘 모르겠다 ㅠ

옳은 문자열인지 확인은 stack 개념을 이용해서 했다.

#include <string>
#include <vector>

using namespace std;

bool IS_RIGHT(string s)
{
    vector<char> stack;

    for (int i = 0; i < s.size(); i++)
    {
        if (s[i] == '(' || s[i] == '{' || s[i] == '[')
            stack.push_back(s[i]);
        else
        {
            if (stack.empty())
                return false;
            else
            {
                if (stack[stack.size() - 1] == '(' && s[i] == ')')
                    stack.pop_back();
                else if (stack[stack.size() - 1] == '{' && s[i] == '}')
                    stack.pop_back();
                else if (stack[stack.size() - 1] == '[' && s[i] == ']')
                    stack.pop_back();
                else
                    return false;
            }
        }
    }

    if (!stack.empty())
        return false;
    else
        return true;
}

int solution(string s) {
    int answer = 0;

    for (int i = 0; i < s.size(); i++)
    {
        if (IS_RIGHT(s))
            answer++;
        char temp = s[0];
        s.erase(s.begin());
        s.push_back(temp);
    }

    return answer;
}

+ Recent posts