백준 algorithm
백준 9012 - 괄호
cosmohoo
2020. 2. 21. 00:55
반응형

=>stack을 이용해 '('를 만나는 경우 push를 하고 ')'를 만나는 경우 pop을 하였다.
=>괄호가 끝날 때 까지 해당 작업을 다 한 이후에 stack이 비어있으면 완전한 괄호(YES)이고, stack이 비어있지 않으면 불완전한 괄호(NO)이다.
=>함수를 사용하여 true와 false값을 반환한다면 더 간단하게 풀 수 있다.
=>본인은 함수를 생성하지 않고 하였다.
=>stack이 비어있을 때 ')'를 만나는 경우 '('를 push하여 stack이 비지 않도록하여 예외처리를 하였다.
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int N;
cin >> N;
cin.clear();
cin.ignore(256, '\n');
string S;
for(int i=0; i<N; ++i)
{
getline(cin, S);
S+='\n';
int x=0;
stack<char> st;
while(S[x]!='\n')
{
if(S[x]=='(')
{
st.push(S[x]);
}
else
{
if(st.empty())
{
st.push(')');
break;
}
else
st.pop();
}
++x;
}
if(st.empty())cout<<"YES"<<'\n';
else cout<<"NO"<<'\n';
S.clear();
}
return 0;
}
반응형