AtCoder ABC 184 B – Quizzes Python解説

スポンサーリンク

Quizzes

高橋くんは、 N 問のクイズに答えます。
高橋くんの持っている点数ははじめ X 点で、クイズに正解すると 1 点増え、不正解だと 1 点減ります。
ただし、持っている点数が 0 点のときに不正解となった場合は点数は減りません。
高橋くんのクイズの結果が文字列 S で与えられます。
S の左から i 番目の文字が o のとき、 i 問目が正解だったことを、 x のとき、 i 問目が不正解だったことを表します。
高橋くんの最終的な点数はいくつでしょうか?

AtCoder Beginner Contest 「Quizzes」

文字列のox判定をしていきます。"o"の場合は点数を+1、"x"の場合は処理がひとつ増えて、点数が0以上なら点数-1、点数が0点の場合は何の処理もしません。

n, x = map(int, input().split())
s = input()

for i in range(n):
    if s[i] == "o":
        x += 1
    else:
        if x > 0:
            x -= 1
        
print(x)

Pythonのelifをうまく使うと次のようにも書けます。

n, x = map(int, input().split())
s = input()

for i in s:
    if i == "o":
        x += 1
    elif x:
        x -= 1
        
print(x)

elif xと書くと、xが1以上の場合に条件式がTrueとなり処理が実行されます。今回はif文で"o"の場合の処理を書いているので、必然的に"x"の場合かつxが1以上の場合に処理が実行されるようになります。