본문 바로가기
Computer Science

괄호짝짓기

by OKOK 2019. 1. 21.

1. 처음에는 넣고

2. 스택 사용법

3. 여는 것을 스택에 쌓음

4. --top 을 한다는 것은 쌍이 맞아서 해소 되었다는 것을 의미함

5. 여는 것을 stack[top++]에 넣음


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
#include <stdio.h>
 
int main() {
    freopen("input.txt""r", stdin);
    int length;
    char str[300];
    char stack[152];
    int top;
    int i, j;
 
    for (i = 1; i <= 10++i) {
        top = -1;
        scanf("%d"&length);
        scanf("%s", str);
        for (j = 0; j < length; ++j) {
            if (top > length / 2// 반절이 차면 
                break;
            if (top == -1)
                stack[++top] = str[j]; // 제일 처음 것을 넣음
            else
            {
                if ((str[j] == '('|| (str[j] == '{'|| (str[j] == '['|| (str[j] == '<'))
                    stack[++top] = str[j]; // 여는 것들을 stack에 쌓아둠
                else if (((str[j] == ')'&& (stack[top] == '('))
                    || (str[j] == '}'&& (stack[top] == '{')
                    || (str[j] == ']'&& (stack[top] == '[')
                    || (str[j] == '>'&& (stack[top] == '<')
                    
                )
                    --top;
                else
                    break;
            }
        }
        if ((top == -1|| (j == length))
            printf("#%d 1\n", i);
        else
            printf("#%d 0\n", i);
    }
    return 0;
}
cs

 


'Computer Science' 카테고리의 다른 글

GNS  (0) 2019.01.22
길찾기  (0) 2019.01.21
거듭 제곱  (0) 2019.01.21
회문2  (0) 2019.01.21
회문1  (0) 2019.01.21

댓글