관리 메뉴

풀이 보관함

[C++] 백준 9012번: 괄호 본문

problem solving/백준

[C++] 백준 9012번: 괄호

viin 2022. 6. 28. 00:53

문제

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

 

풀이

 

 VPS의 조건을 생각해 보았다 .

  • ( 의 개수와 ) 개수가 같아야 한다.
  • 마지막 문자가 반드시 ) 여야 한다. 
  • 어떤 경우도 )가 (보다 많을 수 없다. 
    • ((()))...는 세번째 문자열까지 ( 는 3개,  )는 0개지만 VPS일 가능성이 있다. 
    • 하지만 )... 이나 (()))... 가 된다면 뒷 문자열을 볼 필요 없이 VPS가 아니다.

 

조건을 세운 후 간단한 정수로 (와 )를 적절히 카운팅하여 풀었다.

  • count = 0로 셋팅한다. 
  • ( 일 때, count를 1씩 증가시킨다.
  • )일 때, count를 1씩 감소시킨다. 
  • count가 0이 아니면 NO를 출력 시킨다. 

 

 

소스

#include <iostream>
#include <string>
#include <cstring>

int main()
{
    int T = 0; std::cin >> T;
    while(T--)
    {
        int count = 0;
        char buf[100]; std::cin>>buf;
        int size = strlen(buf);
        
        for(int i=0; i < size; ++i)
        {
            if(buf[i]=='(') ++count;
            else --count;
            
            if(count <0) break;
        }

        if(count == 0) std::cout << "YES\n";
        else std::cout << "NO\n";

        if(T==0) break;
    }
    return 0;
}