문제

괄호 맞추는 문제는 대부분 스택을 사용해 해결 가능하다.

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

bool check(string s) {
	stack<char> st;
	for (char ch : s) {
		if (ch == '(' || ch == '{' || ch == '[') st.push(ch);
		if (ch == ')') {
			if (st.empty() || st.top() != '(') return false;
			st.pop();
		}
		if (ch == '}') {
			if (st.empty() || st.top() != '{') return false;
			st.pop();
		}
		if (ch == ']') {
			if (st.empty() || st.top() != '[') return false;
			st.pop();
		}
	}
	if (!st.empty()) return false;
	return true;
}

int solution(string s) {
	int answer = 0, size = s.size(), i;

	for (i = 0; i < size; i++) {
		char tmp = s[s.size() - 1];
		s.pop_back();
		s = tmp + s;
		if (check(s)) answer++;
	}
	return answer;
}