-
백준 9012 - 괄호백준 algorithm 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; }
반응형'백준 algorithm' 카테고리의 다른 글
백준 1406 - 에디터 (0) 2020.02.25 백준 1874 - 스택 수열 (0) 2020.02.21 백준 9093 - 단어 뒤집기 (0) 2020.02.20 백준 3009 - 네 번째 점 (0) 2020.02.16 백준 A + B -6 (0) 2020.02.12