[phothon]2504:カッコ内の値コードと説明
2504:かっこの値
10の投稿を見て、数字と文字
(, ), [, ]
の接着剤を積み重ねました.1つのArrayには1つのタイプしかないと考えられているので、この方法は身につけていません.次のコードはスタックに括弧を付けるだけです.
方法
例1の|∧4|を計算する際には、2∧(2+3∧3)+28732*(2+3*3)+2*32∧(2+33)+23を用いた.この式を分配法則を用いて解くと,2872+2ͩ3ͩ3+2ͩ3*2+2*3ͨ2+2ͩ3+2ͩ3が得られる.
コード順序
(()[[]])([])
を乗算してカッコ内の値を計算します.最初からなぜこんなことをしたのか疑っていました.🤔 カッコは既に開いているので、中には他のカッコが入ることが予想されます.innerValue
と(
しかありません.一致しない場合は[
が実行されます.return 0
または()
インスタントラーメン[]
をinnerValue
に追加します.なぜここに2か3を加えたのか疑問だ.🤔 ここで、result
の値を理解するために、innerValue
が考えられる.内の値は28722*22ͨ2です.ここには括弧に乗じた値が書かれています.(()...
または()
のようなペアの場合にのみ行われる.()
は括弧を閉じたことを示す.たとえば、[]
この場合、右カッコを通過するたびにinnerValue //= 2나 3
の値が小さくなる必要があることに気づくかもしれません.コード#コード#
import sys
input = sys.stdin.readline
def checkBalence(bracket: str) -> int:
result = 0
innerValue = 1
bracketStack = []
for index in range(len(bracket)):
if bracket[index] == "(":
bracketStack.append("(")
innerValue *= 2
elif bracket[index] == "[":
bracketStack.append("[")
innerValue *= 3
elif bracket[index] == ")":
if not bracketStack or bracketStack[-1] != "(":
return 0
if bracket[index-1] == "(":
result += innerValue
bracketStack.pop()
innerValue //= 2
else:
if not bracketStack or bracketStack[-1] != "[":
return 0
if bracket[index-1] == "[":
result += innerValue
bracketStack.pop()
innerValue //= 3
# print(
# f"result: {result} innerValue: {innerValue} stack {bracketStack}")
if not bracketStack:
return result
return 0
inputBracket = input().rstrip()
print(checkBalence(inputBracket))
コメントリンク
ドックステーション
Reference
この問題について([phothon]2504:カッコ内の値コードと説明), 我々は、より多くの情報をここで見つけました https://velog.io/@hotbreakb/python-2504-괄호의-값-코드-및-설명テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol