본문 바로가기

알고리즘/백준

[백준] 2504번 : 괄호의 값

728x90

2504번: 괄호의 값

해당 문제를 스택자료구조를 활용하여 문제를 풀면된다.

주어진 조건에따라서 스택을 pop, append 해가면서 최종 마지막 스택값에 있는값을 출력하면 된다.

“(”을 만나면 temp에 *2를 해준다.

“)”를 만나면 result에 가중치를 더하고 temp에 //2를 해준다.

“[”를 만나면 temp에 *3를 해준다.

“]”를 만나면 result에 가중치를 더하고 temp에 //2를 해준다.

char = input()

stack = []
temp = 1
result = 0
errorFlag = False
for i in range(len(char)):
    if char[i] == '(':
        stack.append(char[i])
        temp *= 2
    elif char[i] == '[':
        stack.append(char[i])
        temp *= 3
    elif char[i] == ')':
        if not stack or stack[-1] == '[':
            errorFlag = True
            break
        
        if char[i-1] == '(':
            result += temp
        
        stack.pop()
        temp //= 2
            
    elif char[i] == ']':
        if not stack or stack[-1] == '(':
            errorFlag = True
            break
        
        if char[i-1] == '[':
            result += temp
            
        stack.pop()
        temp //= 3
        
if stack or errorFlag:
    print(0)
else:
    print(result)

 

728x90

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 1405번 : 미친로봇  (0) 2023.10.20
[백준] 14891번 : 톱니바퀴  (0) 2023.10.20
[백준] 2250번 : 트리의 높이와 너비  (0) 2023.10.20
백준 2239번 : 수도쿠  (1) 2023.10.19
[백준] 1051번 : 숫자 정사각형  (0) 2023.10.19