ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 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

    댓글

Designed by Who.