728x90
해당 문제를 스택자료구조를 활용하여 문제를 풀면된다.
주어진 조건에따라서 스택을 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 |