펭로그

[C++] 백준 BOJ 9012 괄호 본문

Study/PS(Algorithm)

[C++] 백준 BOJ 9012 괄호

노랑펭귄 2018. 7. 24. 10:28

문제링크 : https://www.acmicpc.net/problem/9012


1. 열린 괄호의 갯수 == 닫힌 괄호의 갯수 가 성립해야한다.

2. ( 가 나올때마다 카운트를 증가시키고 ) 이 나올때마다 카운트를 감소시켜 최종 카운트가 0이 되어야 한다.

3. 닫힌 괄호가 먼저 나오면 안된다. ())(() 라던지 ))()(( 의 상황이 나오면 안된다는 뜻 (20~21번째 줄 조건시 break)


심화문제로 BOJ 10799번 쇠막대기 문제가 있다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// BOJ 9012 괄호
#include <bits/stdc++.h>
using namespace std;
 
int main() {
    // freopen("../input.txt", "r", stdin);
    int T;
    cin >> T;
 
    while(T--){
        string str;
        cin >> str;
        int cnt = 0;
 
        for(int i = 0; i < str.size(); i++){
            if(str[i] == '(')
                cnt++;
            else
                cnt--;
            if(cnt < 0)
                break;
        }
        cout << (cnt == 0"YES\n" : "NO\n");
    }
 
    return 0;
}
cs


Comments