728x90
반응형

스택 문제이다. 주의해야 될 점이 참 많은 문제다. 그래서 엄청 많이 틀렸다. 

마지막 스택에 '(', '['가 들어있다면 잘못된 형태이므로 0을 출력,

그렇지 않다면 숫자들만 있는 것이기 때문에 스택의 합을 출력해주면 된다.

def solution(s):
    stack = []
    for c in s:
        if c == ')':
            t = 0
            while stack:
                top = stack.pop()
                if top == '(':
                    stack.append(2 if t == 0 else t*2)
                    break
                elif top == '[':
                    return 0
                else:
                    t += top
        elif c == ']':
            t = 0
            while stack:
                top = stack.pop()
                if top == '[':
                    stack.append(3 if t == 0 else t*3)
                    break
                elif top == '(':
                    return 0
                else:
                    t += top
        else:
            stack.append(c)
        
    return stack

s = input()
stack = solution(s) 
if stack == 0:
    stack = []
print(0 if '(' in stack or '[' in stack else sum(stack))
728x90
반응형

+ Recent posts