문제는 쉽게 풀었다. Stack 을 이용하는 문제에서 문자열을 회전하는 부분이 있었는데 이것도 그냥 내가 아는 지식 안에서 substring 을 사용하면 금방 풀 수 있을거라 생각했다.
문자열이 홀수면은 바로 0을 반환해주는 최적화까지 더해서 나름 잘푼거같다.
그리고 stack 문제를 풀때는 꼭 empty() 조건을 찾아주는것도 잊지말자.
#include <string>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
bool check(stack<char>& charStack, string& s){
if(s[0] == ']' || s[0] == ')' || s[0] == '}') return false;
for(int i = 0; i < s.length(); i++){
if(s[i] == '(' || s[i] == '[' || s[i] == '{'){
charStack.push(s[i]);
} else{
if(charStack.empty()) return false;
char left = charStack.top();
char right = s[i];
if(left == '(' && right == ')') charStack.pop();
if(left == '{' && right == '}') charStack.pop();
if(left == '[' && right == ']') charStack.pop();
}
}
return charStack.empty();
}
int solution(string s) {\
if(s.length() % 2 == 1) return 0;
int answer = 0;
//stack<char> charStack;
for(int i = 0; i < s.length(); i++){
stack<char> charStack;
//stack 로직
if(check(charStack,s)) answer++;
//s 형태 바꾸기
s = s.substr(1) + s.substr(0,1);
}
return answer;
}