백준(2504,괄호의 값)

PANGHYUK·2022년 5월 20일
0

BOJ 풀이

목록 보기
4/7
post-thumbnail

문제 설명

입력 1

(()[[]])([])

출력 1

28

입력 2

[][]((])

출력 2

0

손풀이

X

풀이

sym = list(input())
stack = []
ans = 0
tmp = 1

for i in range(len(sym)):
    if sym[i] == '(':
        stack.append('(')
        tmp *= 2

    elif sym[i] == '[':
        stack.append('[')
        tmp *= 3

    elif sym[i] == ')':
        if not stack or stack[-1] == '[': # stack의 가장 상위 값이 '['일 때 0
            ans = 0
            break

        if sym[i-1] == '(': # 리스트에서 이전 값이 '('일 때
            ans += tmp # tmp 값 추가
        stack.pop()
        tmp //= 2 # 괄호가 닫히기 때문에 2로 나눔

    else:
        if not stack or stack[-1] == '(':  # stack에 가장 위에 값이 '('일 때 0
            ans = 0
            break
        
        if sym[i-1] == '[': # 리스트에서 이전 값이 '['일 때
            ans += tmp # tmp 값 추가
        stack.pop()
        tmp //= 3 # 괄호가 닫히기 때문에 2로 나눔

if stack:
    print(0)
else:
    print(ans)

0개의 댓글