티스토리 뷰

728x90

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

 

2504번: 괄호의 값

4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다.  만일

www.acmicpc.net

 

 

 

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
S = input()     # () : 2, [] : 3
stk = []
tmp, res = 1, 0
chk = False
for i in range(len(S)):
    if S[i] == '(':
        tmp *= 2
        stk.append(S[i])
    elif S[i] == '[':
        tmp *= 3
        stk.append(S[i])
    elif S[i] == ')' and (not stk or stk[-1] != '('):
        chk = True
        break
    elif S[i] == ']' and (not stk or stk[-1] != '['):
        chk = True
        break
    elif S[i] == ')':
        if S[i-1] == '(':
            res += tmp
        stk.pop()
        tmp //= 2
    elif S[i] == ']':
        if S[i-1] == '[':
            res += tmp
        stk.pop()
        tmp //= 3
if chk or stk:
    print(0)
else:
    print(res)
cs

 

댓글