:pencil2:코드

import sys
# sys.stdin = open("input.txt")
input = sys.stdin.readline


def check():
    stack = []
    for x in s:
        if x == "(":
            stack.append(x)
        elif x == "[":
            stack.append(x)
        elif x == ")":
            if stack:
                if stack[-1] == "(":
                        stack.pop()
                else:
                    return False
            else:
                return False
        elif x == "]":
            if stack:
                if stack[-1] == "[":
                    stack.pop()
                else:
                    return False
            else:
                return False
    if stack:
        return False
    else:
        return True

def solve():
    global idx
    idx += 1
    if s[idx] in dict:
        idx += 1
        return dict[s[idx - 1]]

    temp = 0
    while idx < len(s):
        if s[idx] in dict:
            break
        temp += solve()

    idx += 1
    return temp * dict[s[idx - 1]]


s = list(input().rstrip())
if not check():
    print(0)
    exit()
dict = {")": 2, "]": 3}
answer = 0
idx = 0
while idx < len(s):
    answer += solve()

print(answer)

:star:풀이

괜찮은 괄호인지 확인하는 함수 check와 괜찮은 괄호일 때 값을 구하는 solve 함수 두개로 구현했다. 스택 문제가 오랜만?이라 그런지 check함수에서 index에러를 3번 정도 발생시킨거 같다 ㅎㅎ solve 함수는 재귀적으로 구현했다. 여는 괄호와 닫는 괄호가 있을 때 check함수를 통과한 상태라면 닫는 괄호에만 신경을 써줘도 되기 때문에 idx를 1씩 늘려주는 코드를 넣어주었다. 푸는데 꽤 걸린 문제당..골드급은 되는 듯??

댓글남기기