728x90
2504번: 괄호의 값
4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일
www.acmicpc.net
def checkBrankets(list):
answer = False
stack = []
for i in list:
if i == '(' or i == '[':
stack.append(i)
else:
if not stack:
return answer
elif i == ')':
if stack[-1] == '(':
stack = stack[:-1]
else:
stack.append(i)
else:
if stack[-1] == '[':
stack = stack[:-1]
else:
stack.append(i)
if not stack:
answer = True
return answer
def judge(list):
stack = []
answer = 0
for i in list:
if i == '(' or i == '[':
stack.append(i)
else:
if stack:
if str(stack[-1]).isdigit() and str(stack[-2]).isdigit():
m = stack.pop()
n = stack.pop()
stack.append(m + n)
if i == ')':
if str(stack[-1]).isdigit():
num = stack.pop()
stack.pop()
stack.append(num * 2)
else:
stack.pop()
stack.append(2)
else:
if str(stack[-1]).isdigit():
num = stack.pop()
stack.pop()
stack.append(num * 3)
else:
stack.pop()
stack.append(3)
return sum(stack)
n = input()
if checkBrankets(n) == False:
print(0)
else:
print(judge(n))
=> runtime error가 나온다.
def checkBrankets(list):
answer = False
stack = []
for i in list:
if i == '(' or i == '[':
stack.append(i)
else:
if not stack:
return answer
elif i == ')':
if stack[-1] == '(':
stack = stack[:-1]
else:
stack.append(i)
else:
if stack[-1] == '[':
stack = stack[:-1]
else:
stack.append(i)
if not stack:
answer = True
return answer
def judge(list):
stack = []
for i in list:
if i == '(' or i == '[':
stack.append(i)
elif i == ')':
if stack[-1] == '(':
stack[-1] = 2
else:
tmp = 0
for j in range(len(stack) - 1, -1, -1):
if stack[j] == '(':
stack[-1] = tmp * 2
break
else:
tmp += stack[j]
stack = stack[:-1]
elif i == ']':
if stack[-1] == '[':
stack[-1] = 3
else:
tmp = 0
for j in range(len(stack) - 1, -1, -1):
if stack[j] == '[':
stack[-1] = tmp * 3
break
else:
tmp += stack[j]
stack = stack[:-1]
return sum(stack)
n = input()
if checkBrankets(n) == False:
print(0)
else:
print(judge(n))
=> 아무래도 str(i).isdigit()의 문제가 아닐까 싶다.
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
(Brute Force) 백준 2231 분해합 - python (0) | 2021.05.16 |
---|---|
(Brute Force)백준 2798 블랙잭 - python (0) | 2021.05.16 |
(Floyd)백준 11404 플로이드 - python (0) | 2021.03.15 |
(BFS)백준 18405 경쟁적 전염 - python (0) | 2021.03.13 |
(DFS)백준 14502 연구소 - python (0) | 2021.03.13 |