백준 균형잡힌 세상 C++

2023. 9. 29. 17:28알고리즘

 

#include <iostream>
#include <stack>

using namespace std;
stack<char> s;
int main(void){
    cin.tie(NULL);
    ios::sync_with_stdio(false);
    while(1){
        string t;
        getline(cin, t);
    //    cout<<endl<<"t = "<<t<<endl;
        if (t=="."){
            break;
        }
        bool flag = true;
        for (int i=0;i<t.size();i++){
            if (t[i]=='('){
                s.push(t[i]);
            }
            else if (t[i]==')'){
                if (s.empty()){
                    flag=false;
                    break;
                }
                if (s.top()=='('){
                    s.pop();
                } else{
                    flag=false;
                    break;
                }
            }
            else if (t[i]=='['){
                s.push(t[i]);
            }
            else if (t[i]==']'){
                if (s.empty()){
                    flag=false;
                    break;
                }
                if (s.top()=='['){
                    s.pop();
                } else{
                    flag=false;
                    break;
                }
            }
        }
      //  cout<<"flag = "<<flag<< "s.size = "<<s.size()<<endl;
        if (flag==true && s.empty()){
            cout<<"yes"<<endl;
        }
        else{
            cout<<"no"<<endl;
        }
        while (!s.empty()){
            s.pop();
        }
    }
}

스택을 이용해서 간단하게 구현할 수 문제이다.

 

 

'알고리즘' 카테고리의 다른 글

프로그래머스 네트워크 c++  (0) 2023.09.30
프로그래머스 타겟넘버 C++  (0) 2023.09.30
프로그래머스 단어퍼즐 c++  (0) 2023.09.29
백준 11005 진법 변환 2 C++  (0) 2023.09.29
백준 1913 C++  (0) 2023.09.29