728x90
반응형
스택 문제이다. 주의해야 될 점이 참 많은 문제다. 그래서 엄청 많이 틀렸다.
마지막 스택에 '(', '['가 들어있다면 잘못된 형태이므로 0을 출력,
그렇지 않다면 숫자들만 있는 것이기 때문에 스택의 합을 출력해주면 된다.
def solution(s):
stack = []
for c in s:
if c == ')':
t = 0
while stack:
top = stack.pop()
if top == '(':
stack.append(2 if t == 0 else t*2)
break
elif top == '[':
return 0
else:
t += top
elif c == ']':
t = 0
while stack:
top = stack.pop()
if top == '[':
stack.append(3 if t == 0 else t*3)
break
elif top == '(':
return 0
else:
t += top
else:
stack.append(c)
return stack
s = input()
stack = solution(s)
if stack == 0:
stack = []
print(0 if '(' in stack or '[' in stack else sum(stack))
728x90
반응형
'Agorithm > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 1158번 요세푸스 문제(python) (0) | 2021.03.06 |
---|---|
백준 알고리즘 18111번 마인크래프트 (python) (0) | 2021.03.06 |
백준 알고리즘 1966번 프린터 큐(python) (0) | 2021.03.05 |
백준 알고리즘 2164번 카드2(python) (0) | 2021.03.05 |
백준 알고리즘 11866번 요세푸스 문제 0(python) (0) | 2021.03.05 |