BaekJoon2504_괄호의 값

최효준·2023년 4월 8일
0

알고리즘 문제풀이

목록 보기
58/61

문제

풀이

스택을 활용하는 문제이다. 괄호의 종류는 2개이므로 하나하나 검사해가며 풀면 된다. 이때 곱하기가 있으므로 (가 나오면 2를 해주고 [가 나오면 3을 해준다.
하나씩 스택에 넣어가며 검사하고 검사 중 짝이 되지 않는 경우는 0으로 만든뒤 반복문을 탈출하면 된다.
짝이 지어지는 경우에는 각 값을 더해가며 답을 구하면 된다.

풀이 코드

import sys
from collections import deque


input = sys.stdin.readline
symbol = list(input().rstrip())
stack=[]
multy = 1
answer = 0
for i in range(len(symbol)):
    if symbol[i] == "(":
        stack.append(symbol[i])
        multy *= 2
    elif symbol[i] == "[":
        stack.append(symbol[i])
        multy *= 3
        
    elif symbol[i] == ")":
        if not stack or stack[-1] == "[":
            answer = 0
            break
        if symbol[i-1] == "(":
            answer += multy
        stack.pop()
        multy //=2
        
    else:
        if not stack or stack[-1] == "(":
            answer = 0
            break
        if symbol[i-1] == "[":
            answer += multy
            
        stack.pop()
        multy //= 3
        
if stack:
    print(0)
else:
    print(answer)
    
profile
Not to be Number One, but to be Only One

0개의 댓글