PS/BOJ

[백준 BOJ][stack] 9012 괄호

Jubil 2018. 7. 26. 02:14
반응형

9012_괄호

링크

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

 

풀이


 

괄호 문제는 Stack으로 구현할 수 있습니다.

여는 괄호를 push, 닫는 괄호를 pop이라고 생각해줍니다.

pop을 하기 전에 empty 체크를 해서 비어 있는데 pop을 했다면 잘못된 괄호 문자열이라고 체크해줍니다.

 

그리고 마지막에 괄호 문자열이 끝나고 스택의 empty 여부를 체크했을 때 안에 data가 있다면 괄호가 다 닫힌 게 아니므로 잘못된 괄호 문자열이라고 체크해줍니다.

 

1.     empty인데 pop 시도할 경우

2.     끝났는데 empty가 아닐 경우

 

 

 

코드

 

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

//9012_괄호

#include <iostream>

#include <stack>

#include <string>

using namespace std;

 

int main() {

    ios_base::sync_with_stdio(false); cin.tie(NULL);

 

    int T;

    string str;

 

    cin >> T;

 

    while (T--) {

        stack<int> stk;

        bool wrong = false;

        cin >> str;

 

        for (auto c : str) {

            if (c == '(') {

                stk.push(1);

            }

 

            else if (c == ')') {

                if (stk.empty()) {

                    wrong = true;    //여는 괄호  < 닫는 괄호 

                    break;

                }

                else {

                    stk.pop();

                }

            }

        }

 

        if (stk.empty() && !wrong) cout << "YES\n";    //empty X -> 여는 괄호  > 닫는 괄호 

        else cout << "NO\n";

    }

 

    return 0;

}

Colored by Color Scripter

cs

 

 



반응형

'PS > BOJ' 카테고리의 다른 글

[백준 BOJ][queue] 2075 N번째 큰 수  (0) 2018.07.26
[백준 BOJ][stack] 10799 쇠막대기  (0) 2018.07.26
[백준 BOJ][queue] 10845 큐  (0) 2018.07.26
[백준 BOJ][stack] 10828 스택  (0) 2018.07.26
[백준 BOJ][sort] 11651 좌표 정렬하기 2  (0) 2018.07.24