Problem Solving/백준

[백준-9012] 괄호

<문제>

 


<Code>

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

bool Vps(string str){
  int len=(int)str.length(); //문자열 길이
  stack<char> cstack; //char type stack

  for(int i=0;i<len;i++){
    char c=str[i];

    if(c=='('){
      cstack.push(str[i]);
    }else{ //')'
      
      if(!cstack.empty()){ //비어있지 않으면 pop
        cstack.pop();
      }else{ //비어있으면(여는 괄호 짝이 없음) false
        return false;
      }
    }
  }
  return cstack.empty(); //스택에 괄호가 남아있으면 false
}


int main() {
  int n;
  cin>>n;

  for(int i=0;i<n;i++){
    string str;
    cin>>str;

    if(Vps(str)){
      cout<<"YES"<<endl;
    }else{
      cout<<"NO"<<endl;
    }
  }

  return 0;
}


<Comment>

스택 필수 예제인듯

여는 괄호->push

닫는 괄호->비어있으면 NO , 안비어있으면 pop

끝까지 검사했는데도 안비어있으면 NO


 

www.acmicpc.net/problem/9012

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

 

'Problem Solving > 백준' 카테고리의 다른 글

[백준-10845] 큐  (0) 2021.03.17
[백준-10828] 스택  (0) 2021.03.17
[백준-15596] 정수 N개의 합  (0) 2021.02.05
[백준-2562] 최댓값  (0) 2021.02.04
[백준-2884] 알람 시계  (0) 2021.02.03