Algorithm Problem/Python
[python] λ°±μ€ - 2504. κ΄νΈμ κ°
deo2kim
2020. 10. 13. 20:03
λ°μν
π€λ¬Έμ ν΄κ²°
-
S2 | μ€ν, μλ£κ΅¬μ‘°,
ꡬν, μ¬κ·
κ΄νΈλ¬Έμ λ νμ μ€νμΌλ‘ νμλ€.
- λ¨Όμ μ¬λ°λ₯Έ κ΄νΈμΈμ§ 체ν¬νμ! κ·Έ λ€μ
- μ€νμ μ΄μ©ν΄ κ΄νΈ μ§μ λ§μΆλ©΄μ ()μΌ λ 2, []μΌ λ 3μ κ³μ°ν΄μ€λ€.
- λ§μ½ μ€νμ λ§μ§λ§μ μ«μκ° μλ€λ©΄ κ³±ν΄μ€λ€.
- λ§μ½ μ€νμ μ«μκ° μ°μμΌλ‘ λμ΄λλ©΄ λν΄μ€λ€.
π»μμ€ μ½λ
def is_right(s):
stack = []
for ss in s:
if ss == '(':
stack.append(ss)
elif ss == ')':
if stack and stack[-1] == '(':
stack.pop()
else:
return False
elif ss == '[':
stack.append(ss)
elif ss == ']':
if stack and stack[-1] == '[':
stack.pop()
else:
return False
if stack:
return False
return True
def my_stack(s):
stack = []
for c in s:
print(stack)
if c == '(':
stack.append(c)
elif c == '[':
stack.append(c)
elif c == ')':
tmp = 2
while True:
t = stack.pop()
if type(t) == int:
tmp *= t
elif t == '(':
stack.append(tmp)
break
elif c == ']':
tmp = 3
while True:
t = stack.pop()
if type(t) == int:
tmp *= t
elif t == '[':
stack.append(tmp)
break
tmp = 0
while stack:
t = stack.pop()
if type(t) == int:
tmp += t
else:
stack.append(t)
break
if tmp:
stack.append(tmp)
return stack[-1]
S = input()
if is_right(S):
print(my_stack(S))
else:
print(0)
πλ¬Έμ νμΈ
μΆμ²: BACKJOON ONLINE JUDGE
λ§ν¬: https://www.acmicpc.net/problem/2504
2504λ²: κ΄νΈμ κ°
4κ°μ κΈ°νΈ ‘(’, ‘)’, ‘[’, ‘]’λ₯Ό μ΄μ©ν΄μ λ§λ€μ΄μ§λ κ΄νΈμ΄ μ€μμ μ¬λ°λ₯Έ κ΄νΈμ΄μ΄λ λ€μκ³Ό κ°μ΄ μ μλλ€. ν μμ κ΄νΈλ‘λ§ μ΄λ£¨μ΄μ§ ‘()’μ ‘[]’λ μ¬λ°λ₯Έ κ΄νΈμ΄μ΄λ€. λ§μΌ
www.acmicpc.net
λ°μν