[Programmers] 괄호 회전하기

Date:

[Programmers] 괄호 회전하기

Problem URL : 괄호 회전하기

#include <string>
#include <vector>
#include <stack>

using namespace std;
int len;

bool proper(string s) {
    bool proper = true;
    stack<char> st;
    for (int i = 0; i < len; i++) {

      if(s[i] == '(' || s[i] == '{' || s[i] == '[') {
          st.push(s[i]);
      }else {
          
          if(st.empty()){
            proper = false;
            break;
          }else if(s[i] == ')') {
            if(st.top() == '('){
              st.pop();
            }else{
              proper = false;
              break;
            }
          }else if(s[i] == '}') {
            if(st.top() == '{'){
              st.pop();
            }else{
              proper = false;
              break;
            }
          }else {
            if(st.top() == '['){
              st.pop();
            }else{
              proper = false;
              break;
            }
          }
        
      }
        
    }
    if(!st.empty()) {
      proper = false;
    }
    return proper;
}

int solution(string s) {
    int cnt = 0;
    len = s.size();
    for (int i = 0; i < len; i++) {
        if(proper(s)) {
            cnt ++;
        }
        char f = s[0];
        s = s.substr(1,len - 1);
        s = s + f;
    }
    
    return cnt;
}

댓글