짱아의 개발 기록장

백준 9012번. 괄호(c++) / 스택 본문

Algorithm/Baekjoon

백준 9012번. 괄호(c++) / 스택

jungahshin 2020. 8. 22. 16:29
반응형

전형적인 스택문제이다.

열린 괄호와 닫힌 괄호의 개수가 일치해야하는 것 뿐 아니라, 올바른 괄호의 형태여야한다.

즉, ()()는 YES이지만, )()(와 같은 형태는 NO이다.

 

 

코드 첨부

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// 괄호
#include <iostream>
#include <stack>
using namespace std;
 
int n;
stack<char> S;
string s;
 
int main()
{
    cin>>n;
    for(int i=0; i<n; i++){
        cin>>s;
        bool check = true;
        for(int j=0; j<s.size(); j++){
            if(s[j]=='('){
                S.push(s[j]);
            }else{
                if(S.size()==0){
                    check = false;
                    break;
                }else{
                    if(S.top()=='('){
                        S.pop();
                    }else{
                        check = false;
                        break;
                    }                    
                }
            }
        }
        
        if(check==true){
            if(S.size()!=0){
                check = false;
            }            
        }
 
        if(check==true){
            cout<<"YES"<<"\n";
        }else{
            cout<<"NO"<<"\n";
        }
 
        while(!S.empty()){
            S.pop();
        }
    }
 
    return 0;
}
cs

 

문제 첨부

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

 

9012번: 괄호

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

www.acmicpc.net

반응형
Comments