BOJ 1541紛失括弧


https://www.acmicpc.net/problem/1541
2秒、128 MBメモリ
input :
  • 式は、「0」から「9」、「+」および「-」で構成され、最初の文字と最後の文字は数値です.
  • output :
  • 正解
  • を出力
    条件:
  • 歳の俊適はかっこをつけて、この値を最低に下げようとした.
  • 一番小さいものを作るにはどうすればいいのでしょうか...
    プラスマイナスを優先し、マイナスに移動します.
    '-'を使用してグループ化した後.
    数字の形は必ずしも「数字+数字」ではありません.
    「数字+数字+数字」などは何度も出てくる可能性があるので、グループ化するときにリストに並べて入れましょう.
    「+」付きの数字をすべて加えてtemp配列に入れます.
    while data:
        now = data.pop(0)
    
        if '+' in now:
            in_temp = list(map(int, now.split("+")))
            ret = in_temp.pop(0)
    
            while in_temp:
                a = in_temp.pop(0)
                ret += a
    
            temp.append(ret)
        else:
            temp.append(int(now))
    それからまた作るときは、1つの値段を減らして、もう1つ作って、
    最後に前から外せばいいです
    import sys
    
    data = list(sys.stdin.readline().rstrip().split("-"))
    temp = []
    
    while data:
        now = data.pop(0)
    
        if '+' in now:
            in_temp = list(map(int, now.split("+")))
            ret = in_temp.pop(0)
    
            while in_temp:
                a = in_temp.pop(0)
                ret += a
    
            temp.append(ret)
        else:
            temp.append(int(now))
    
    ans = temp.pop(0)
    
    while temp:
        now = temp.pop(0)
        ans -= now
    
    print(ans)
    日に日に荒れていく感じではありませんが、まずは何かをして、何かを落とすので仕方ありません.