본문 바로가기
카테고리 없음

백준 C++ 9012

by park_hama 2024. 7. 31.

스택 자료구조를 이용했다.

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include<stack>

using namespace std;


int main() {
    
    int n;
    string input;
    string isyes;
    
    cin >> n;
    for (int i = 0; i < n; i++) {
    
        isyes = "YES";
        stack<char> st; // 매번 스택 초기화 해야함.
        cin >> input;

        for (int k = 0; k < input.length(); k++) {

            if (input[k] == '(')
                st.push(input[k]);

            else if (!st.empty() && input[k] == ')' && st.top() == '(')//어차피 순차적으로 확인하기 때문에 ))이런 형태가 나오면 NO임
                st.pop();

            else {//위에 둘 경우가 아닌거면 "))"이런 형태인데 이러면 NO임
                isyes = "NO";
                break;
            }

        }
        if (!st.empty()) // 다 돌았는데 '('이게 들어가 있으면 짝이 안 맞기에 넣었음.
            isyes = "NO";

        cout << isyes << '\n';

    }

    return 0;
}