<코드>

#include <iostream>
#include <string>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    //닫는거만 세주면 됩니다
    //여는 괄호에서 닫는 거 개수만큼 차감해주고 마이너스가 된다면 VPS가 아니죠
    int n;
    cin >> n;

    while (n--) {
        string input;
        cin >> input;
        int vpsCount = 0;
        bool minus = false;

        for (int i = 0; i < input.size(); i++) {

            if (input[i] == '(') {
                vpsCount++;
            }
            else {
                vpsCount--;
            }
            if (vpsCount < 0) {
                cout << "NO" << "\n";
                minus = true;
                break;
            }
        }

        if (minus == false) {
            if (vpsCount != 0) {
                cout << "NO" << "\n";
            }
            else {
                cout << "YES" << "\n";
            }
        }
    }
    
    return 0;
}

주석에 써놓은대로 스택을 굳이 안쓰고 

닫는 개수만 세주면 되겠죠

여는 괄호에서 닫는괄호를 차감해주고 음수가 된다면 닫는괄호가 더 많은거니

vps가 아니라고 볼 수 있습니다.

'[백준] > C++' 카테고리의 다른 글

백준 11687번 팩토리얼 0의 개수 [C++]  (0) 2023.07.08
백준 13300번 방 배정 [C++]  (0) 2023.06.25
백준 10845번 큐 [C++]  (0) 2023.06.25
백준16396번 선 그리기 [C++]  (0) 2023.06.25
백준 1316번 그룹 단어 체커 [C++]  (0) 2023.06.25

+ Recent posts