반응형

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

 

코딩테스트 연습 - 괄호 회전하기

 

programmers.co.kr

 

#include <string>
#include <vector>
#include <stack>
using namespace std;

bool isValid(string& s) {
    stack<char> stk;
    for(int i=0; i<s.size(); i++) {
        if(s[i] == '[' || s[i] == '{' || s[i] == '(') stk.push(s[i]);
        else {
            if(stk.empty() || stk.top() != (s[i] == ']' ? '[' : (s[i] == ')' ? '(' : '{'))) return false;
            stk.pop();
        } 
    }
    return stk.empty();
}

void rotate(string& s) {
    s = s.substr(1) + s[0];
}

int solution(string s) {
    int answer = isValid(s);
    for(int i=1; i<s.size(); i++) {
        rotate(s);
        answer += isValid(s);
    }
    return answer;
}
반응형

+ Recent posts