:: ADVANCE ::

[ALGOSPOT][stack] Mismatched Brackets 본문

Algorithm/ES (완전탐색)

[ALGOSPOT][stack] Mismatched Brackets

KSJ14 2015. 1. 10. 04:40
반응형

ALGOSPOT  stack


Mismatched Brackets

 

https://algospot.com/judge/problem/read/BRACKETS2



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
#include <stdio.h>
#include <string.h>
 
char input[50];
char stack[50];
int out[50];
 
int main(void)
{
    int i, result = 0, n = 0, index = 0;
 
    gets(input);
 
    for (i = 0; i < (int)strlen(input); i++)    {
        if (input[i] == '(')    {
            stack[index++] = input[i];
        }
        else if (input[i] == ')' && stack[index - 1] == '(')    {
            if (out[index] == 0)    out[index] = 1;
            out[index - 1] += out[index] * 2;
            out[index] = 0;
            index--;
        }
        else if (input[i] == '[')    {
            stack[index++] = input[i];
        }
        else if (input[i] == ']' && stack[index - 1] == '[')    {
            if (out[index] == 0)    out[index] = 1;
            out[index - 1] += out[index] * 3;
            out[index] = 0;
            index--;
        }
        else {
            printf("0\n");
            return 0;
        }
    }
 
    printf("%d\n", out[0]);
 
    return 0;
}
 
cs

 


반응형
Comments