Algorithm/백준과 프로그래머스

[C++] 9012. 괄호

young_3060 2023. 7. 14. 15:00
728x90

 

 풀이과정 

괄호 문제는 스택의 대표적 문제이다.

  1. 짝맞추는 문제이므로 '('가 들어왔을때만 스택에 넣어준다.
  2. ')'가 들어왔을 때 스택이 비어있다면 잘못된 괄호이므로 "NO"를 출력해주고 아니라면 짝이 맞았으므로 스택을 pop해준다.
  3. 문자열 길이만큼 진행한 뒤 스택이 비어있지 않다면 짝이 안맞았음을 의미하므로 "NO"를 출력한다.
  4. 스택이 비어있다면 짝이 다 맞았다는 것을 의미하므로 "YES"를 출력한다.

 

#include <iostream>
#include <stack>
using namespace std;

void VPS(string inp) {
    stack<char> s;
    for (int i = 0; i < inp.length(); i++)
    {
        if (inp[i] == '(')
            s.push('(');
        else
        {
            if (!s.empty())
                s.pop();
            else {
                cout << "NO" << "\n";
                return;
            }
        }
    }
    if(!s.empty()) {
        cout << "NO" << "\n";
        return;
    }
    cout << "YES" << "\n";
}

int main(void) {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int N; cin >> N;
    for(int i=0; i<N; i++) {
        string inp;
        cin >> inp;
        VPS(inp);
    }
    
    return 0;
}
728x90

'Algorithm > 백준과 프로그래머스' 카테고리의 다른 글

[C++] 2164. 카드2  (0) 2023.07.16
[C++] 1158. 요세푸스  (0) 2023.07.15
[C++] 10828. 스택  (0) 2023.07.11
[C++] 2751. 수 정렬하기 2  (0) 2023.07.06
[C++] 11728 : 배열 합치기  (0) 2022.04.12