for
文のいい練習問題!
問題概要
高橋君は 問のクイズに答える。最初 点であり、正解すると 1 点増加する。不正解だと 1 点減少するが、不正解前に 0 点である場合は減らない。
高橋君が各問題に正解したかどうかを表す文字列 が与えられる。 が 'o' のときは 問目に正解したことを表し、'x' のときは不正解であったことを表す。
高橋君の最終的な得点を求めよ。
考えたこと
文字列 を前から順に見ていけばよい。
高橋君のスコアを表す変数 X
(初期値は )を用意して、for
文を用いて、 に対して、次のように処理する。
S[i] == 'o'
のとき:X
を 1 増やす- そうでないとき:
X
をmax(X - 1, 0)
に更新する
コード
#include <bits/stdc++.h> using namespace std; int main() { int N, X; string S; cin >> N >> X >> S; for (int i = 0; i < N; i++) { if (S[i] == 'o') ++X; else X = max(X-1, 0); } cout << X << endl; }