다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다.
대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록 solution 함수를 완성해주세요.
rotateStr
= i ~ last char
+ 0~i
스택
null
#include <iostream>
#include <string>
#include <vector>
#include <stack>
using namespace std;
bool isCorrectString(string str) {
stack<char> s;
for(char c : str) {
if(s.empty()) s.push(c);
else {
if(
s.top() == '{' && c == '}' ||
s.top() == '[' && c == ']' ||
s.top() == '(' && c == ')'
) {
s.pop();
}
else {
s.push(c);
}
}
}
return s.empty() ? true : false;
}
int solution(string s) {
int answer = 0;
for(int i = 0; i<s.size(); ++i) {
string rotateStr = "";
for(int j = i; j<s.size(); ++j) {
rotateStr += s[j];
}
for(int k = 0; k < i; ++k) {
rotateStr += s[k];
}
answer += isCorrectString(rotateStr) ? 1 : 0;
}
return answer;
}
}