文字列の動きをシミュレーションしながら最大値も更新していく!
問題概要
整数 を持っていて、最初は 0 である。
長さ の文字列 に従って、これを使って 回の操作を行った。 回目の操作では、文字 が 'I' ならば を 1 増やし、'D' ならば を 1 減らす。
操作の過程における、 のとる値の最大値を求めよ。
解法
の変化をシミュレーションするのは for
文を用いて容易に書ける。
その過程での の最大値を表す変数を別途用意して、その値を逐次更新していけばよい。
#include <bits/stdc++.h> using namespace std; int main() { int N; string S; cin >> N >> S; int x = 0, res = 0; for (auto c : S) { if (c == 'I') ++x; else --x; res = max(res, x); } cout << res << endl; }