[백준] 2504번 괄호의 값 ★★

거북이·2023년 7월 31일
0

백준[골드5]

목록 보기
64/82
post-thumbnail

💡테스트케이스

입력
(()[[]])([])

출력
28

parensstacktempresult
((20
((((40
(()(24
(()[([64
(()[[([[184
(()[[]([622
(()[[]](222
(()[[]])X122
(()[[]])((222
(()[[]])([([622
(()[[]])([](228
(()[[]])([])X128

💡코드(메모리 : 31388KB, 시간 : 44ms)

parens = list(input().strip())
stack = []
result = 0
flag = True	# stack이 비어있는지 아닌지 여부를 판별하는 변수
temp = 1

for i in range(len(parens)):
    if parens[i] == "(":
        temp *= 2
        stack.append(parens[i])
    elif parens[i] == "[":
        temp *= 3
        stack.append(parens[i])
    elif parens[i] == ")":
        if not stack or stack[-1] != "(":
            flag = False
            break

        if i > 0 and parens[i - 1] == "(":
            result += temp

        stack.pop()
        temp //= 2
    elif parens[i] == "]":
        if not stack or stack[-1] != "[":
            flag = False
            break

        if i > 0 and parens[i - 1] == "[":
            result += temp

        stack.pop()
        temp //= 3

if not flag or stack:
    print(0)
else:
    print(result)

💡소요시간 : 38m

0개의 댓글