EX11 - 足したり引いたり Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

説明ページに戻る

問題文

1+-のみからなる式 S1 行で与えられるので、計算結果を出力してください。

例えば式 S1+1+1-1 であったとき、計算結果は 2 です。

具体的な式 S の形式は以下の通りです。

  • S1 文字目は必ず 1 です。
  • その後、「+ または -」と 1 が交互に続きます。
  • S の最後の文字も必ず 1 です。

式と演算子はスペースで区切られていないことに注意してください。

ページ末尾に問題のヒントがあります。詰まったら見てみましょう。


サンプルプログラム
S = input()
# ここにプログラムを追記

制約

  • 1 \le |S| \le 100|S| は文字列の長さ)
  • S1 から始まり、その後「+ または -」と 1 が交互に続き、1 で終わる

入力

入力は次の形式で標準入力から与えられます。

S

出力

Sの計算結果を出力してください。

出力の最後には改行が必要です。


ジャッジでは以下の入力例以外のケースに関してもテストされることに注意。

入力例1

1+1+1-1

出力例1

2

問題文中で説明した入出力です。


入力例2

1-1-1-1-1-1

出力例2

-4

計算結果は負の値になることもあります。


入力例3

1

出力例3

1

入力は 1 だけで終わることもあります。


入力例4

1-1-1+1+1+1+1-1+1-1+1-1+1

出力例4

3

ヒント

次のプログラムは 9 文字の式 S にいくつ 1 が含まれているかを出力するプログラムです。
今回の問題を解く際の参考にしてください。

クリックでヒントプログラムを見る

S = input()

count = 0

# 9 文字の式に限定していることに注意
for i in range(9):
    if S[i] == "1":
        count += 1

print(count)

ヒント入力

1-1-1+1+1

ヒント出力

5

テスト入出力

書いたプログラムがACにならず、原因がどうしてもわからないときだけ見てください。

クリックでテスト入出力を見る

テスト入力1
1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1+1
テスト出力1
-25

テスト入力2
1+1+1+1+1+1+1+1+1+1+1+1+1
テスト出力2
13

テスト入力3
1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1
テスト出力3
-33

テスト入力4
1+1-1+1-1+1-1+1-1+1-1+1-1+1-1+1+1-1-1+1+1-1-1+1+1+1-1-1-1+1
テスト出力4
2

解答例

必ず自分で問題に挑戦してみてから見てください。

クリックで解答例を見る

S = input()

# 計算結果を保持する変数
answer = 1

for i in range(len(S)):
    if S[i] == "+":
        answer += 1
    if S[i] == "-":
        answer -= 1

print(answer)

in の後ろに文字列を指定することで、文字に対して繰り返し処理を行うこともできます。

S = input()

# 計算結果を保持する変数
answer = 1

for c in S:
    if c == "+":
        answer += 1
    if c == "-":
        answer -= 1

print(answer)