코딩테스트
[백준] 9012 괄호
yeoul0714
2025. 5. 30. 02:52
#include "bits/stdc++.h"
using namespace std;
bool IsMatch(char input1, char input2)
{
return input1 == '(' && input2 == ')';
}
void CheckAndPrint(vector<string> input)
{
for (string str : input)
{
stack<char> Stack;
for (char ch : str)
{
if (Stack.size() > 0)
{
if (IsMatch(Stack.top(),ch))
{
Stack.pop();
continue;
}
}
Stack.push(ch);
}
if (Stack.size() == 0)
{
cout << "YES" << endl;
}
else
{
cout << "NO" << endl;
}
}
}
int main() {
int n;
string input;
vector<string> strvector;
getline(cin, input);
n = stoi(input);
for (int a = 0;a < n;a++)
{
getline(cin, input);
strvector.push_back(input);
}
CheckAndPrint(strvector);
return 0;
}
스택을 이용해서 간단하게 괄호를 검사하는 문제였습니다.
주목할만한 포인트는 getline을 이용해서 버퍼에 \n이 남는 부분을 막았다는 점입니다.
또한 괄호 검사를 처음엔 top과 ch가 다를때 짝이 맞다고 판별했는데 그럴 경우엔 문제가 있습니다.
)( 같은 경우도 괄호가 맞다고 판단하였기에 IsMatch함수를 통해서 적절한 괄호를 판단했습니다.