[BOJ]2504かっこの値
10253 ワード
2504かっこの値 在貴 スタック かっこを開く スタック (開くと2、[開くと3を掛ける. )
括弧を閉じる スタックからtopを取り出してペアリングする エラーの場合0出力 値の保存 前かっこペアの場合に乗算! 対応する値/nは、元の値を返します. [注意] https://my-coding-notes.tistory.com/343 https://hongcoding.tistory.com/114
import sys
input = sys.stdin.readline
s = list(input().rstrip())[::-1]
def cal(start):
r = 0
while s:
a = s.pop()
if a == "(" or a == "[":
r += cal(a) # 다음 괄호를 입력받아 처리한다.
elif start == "(" and a == ")":
return 2 * max(1,r)
elif start == "[" and a == "]":
return 3 * max(1,r)
# 리스트가 비었는데 최종 return 하지 못했다는 것은 괄호에 문제가 있음을 의미
print(0)
sys.exit()
ans = 0
while s:
ans += cal(s.pop())
print(ans)
bracket = list(input())
stack = []
answer = 0
tmp = 1
for i in range(len(bracket)):
if bracket[i] == "(":
stack.append(bracket[i])
tmp *= 2
elif bracket[i] == "[":
stack.append(bracket[i])
tmp *= 3
elif bracket[i] == ")":
if not stack or stack[-1] == "[":
answer = 0
break
if bracket[i-1] == "(":
answer += tmp
stack.pop()
tmp //= 2
else:
if not stack or stack[-1] == "(":
answer = 0
break
if bracket[i-1] == "[":
answer += tmp
stack.pop()
tmp //= 3
if stack:
print(0)
else:
print(answer)
22.2.3
Reference
この問題について([BOJ]2504かっこの値), 我々は、より多くの情報をここで見つけました https://velog.io/@kinnyeri/BOJ-2504-괄호의-값テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol