상세 컨텐츠

본문 제목

< 백준 BaekJoon : 9012번 괄호> C++

C++/Baekjoon

by J2on 2024. 1. 22. 20:31

본문

<< 문제 >>

https://www.acmicpc.net/problem/9012

 

9012번: 괄호

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

www.acmicpc.net

 

연속으로 이어진 괄호를 바탕으로 (, ) 가 짝을 잘 이루고 있는지 확인하는 문제

 

잘 생각해야하는 것은 )의 수가 (보다 많아지는 순간 그 문자열은 VPS가 될 수 없다는 것이다. 

이미 ) 가 많아진 순간 열리지 않은 괄호를 닫아버리는 것이기 때문이다.

 그 부분까지 테스트하면 크게 문제 없을 것이라 생각합니다. 

 

<< 코드 >>

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

bool checkVPS(string str) {
  int stack = 0;

  for (char ch : str) {
    if (ch == '(')
      stack++;
    else if (')')
      stack--;
    // 중간에 -1이 된 경우는 무조건 false
    if (stack < 0)
      return false;
  }
  // 0일 때만 true
  if (stack == 0)
    return true;
  else
    return false;
}

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

  string input;
  for (int i = 0; i < num; i++) {
    cin >> input;
    if(checkVPS(input)){
      cout << "YES" << '\n';
    }
    else{
      cout << "NO" << '\n';
    }
  }
}

 

 

 

 

관련글 더보기

댓글 영역