TIL)1541で失われたかっこ

6302 ワード

この位置付け.
1.未来の私がこの问题を解决したい时、过去の私はどのように问题を解决したかをあなたに教えるためです.
2.同じ問題を解決する人にアイデアを提供するため
作成されました.
🍓 失われたかっこ
白駿1541紛失括弧:https://www.acmicpc.net/problem/1541
💡 アイデア
  • '-'を基準として式を分けます.expression.split('-')
  • eval()関数は、0で始まる数値を処理できません.ex)04+05->error
    最初は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)
    最初は問題を間違えた.カッコは一度しか生成できないと思います.
  • '-'は'-'の後ろの括弧
  • です.
  • '-「」が2つ以上の場合、「-」と「-」の間の数字に最大値のカッコ
  • を加算します.
    そう思います.ただし括弧は複数回生成できる問題なので、状況を区別せずに「-」を基準にして式を分け、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)
    時間とメモリの需要量は同じです.しかし、コードはより直感的で理解しやすい.