전공자라면 보자마자 스택이 떠올랐어야 했을 문제
손코딩이 가능해야할 문제
실제 IDE상의 컴파일러, 디버거가 괄호를 검사하는 방식과 같다.
{(등 괄호를 열때는 스택에 넣고 나머지는 스택에 뺀다.
괄호를 열지도 않은 상태나 너무 많이 닫으면 (스택이 비어있으면) -> false
최종 상태에 스택이 비어있으면 모두 짝이 맞은 상태이므로 true
#include <string>
#include <stack>
using namespace std;
bool solution(string s)
{
stack<char> bracketStack;
for (char bracket : s) {
if (bracket == '(') bracketStack.push(bracket);
else if (bracketStack.empty()) return false;
else bracketStack.pop();
}
return bracketStack.empty() ? true : false;
}