TIL)1541で失われたかっこ
6302 ワード
この位置付け.
1.未来の私がこの问题を解决したい时、过去の私はどのように问题を解决したかをあなたに教えるためです.
2.同じ問題を解決する人にアイデアを提供するため
作成されました.
🍓 失われたかっこ
白駿1541紛失括弧:https://www.acmicpc.net/problem/1541
💡 アイデア'-'を基準として式を分けます.expression.split('-') eval()関数は、0で始まる数値を処理できません.ex)04+05->error
最初はeval関数で問題を解決しましたが、実行中にエラーが発生しました.驚くべきことに、eval()関数は0で始まる数字を処理できません. 🍊 私の答え'-'は'-'の後ろの括弧 です.'-「」が2つ以上の場合、「-」と「-」の間の数字に最大値のカッコ を加算します.
そう思います.ただし括弧は複数回生成できる問題なので、状況を区別せずに「-」を基準にして式を分け、1番目以外のすべての数字を取り除くだけです.
🍏 より簡潔な回答
1.未来の私がこの问题を解决したい时、过去の私はどのように问题を解决したかをあなたに教えるためです.
2.同じ問題を解決する人にアイデアを提供するため
作成されました.
🍓 失われたかっこ
白駿1541紛失括弧:https://www.acmicpc.net/problem/1541
💡 アイデア
最初はeval関数で問題を解決しましたが、実行中にエラーが発生しました.驚くべきことに、eval()関数は0で始まる数字を処理できません.
import sys
input = sys.stdin.readline
expression = list(input().strip().split('-'))
answer = 0
for i in range(len(expression)):
if '+' in expression[i]:
nums = expression[i].split('+')
temp = 0
for num in nums:
temp += int(num)
expression[i] = temp
for i in range(len(expression)):
if i == 0:
answer += int(expression[i])
else:
answer -= int(expression[i])
print(answer)
最初は問題を間違えた.カッコは一度しか生成できないと思います.そう思います.ただし括弧は複数回生成できる問題なので、状況を区別せずに「-」を基準にして式を分け、1番目以外のすべての数字を取り除くだけです.
🍏 より簡潔な回答
s = input().split('-')
cnt = 0
for ch in s[0].split('+'):
cnt += int(ch)
for ch in s[1:]:
for c in ch.split('+'):
cnt -= int(c)
print(cnt)
時間とメモリの需要量は同じです.しかし、コードはより直感的で理解しやすい.Reference
この問題について(TIL)1541で失われたかっこ), 我々は、より多くの情報をここで見つけました https://velog.io/@mongle/TIL-1541-잃어버린-괄호テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol