for
文の練習!
問題概要
高橋くんと青木くんが 回の試合を行った。 これらの試合の結果を表す長さ が与えられる。 回目の試合の勝者は、 の 文字目が T ならば高橋くん、A ならば青木くんである。
高橋くんと青木くんのうち、勝った試合の数が多い方を総合勝者とします。 ただし、勝った試合の数が同じである場合は、先にその勝ち数に達した者を総合勝者とする。
高橋くんと青木くんのどちらが総合勝者であるか求めよ。
制約
考えたこと
for
文を使って、文字列 に対して次の値を求めよう!
num_T
:文字列 に含まれる文字 T の個数num_A
:文字列 に含まれる文字 A の個数last_T
: が T である最大のlast_A
: が A である最大の
これらの値が求められれば、次のように判定できる。
num_T > num_A
のとき:"T"num_T < num_A
のとき:"A"num_T == num_A
であってlast_T < last_A
のとき:"T"last_T > last_A
のとき、"A"
コード
#include <bits/stdc++.h> using namespace std; int main() { int N; string S; cin >> N >> S; int num_T = 0, num_A = 0, last_T = -1, last_A = -1; for (int i = 0; i < N; i++) { if (S[i] == 'T') num_T++, last_T = i; else num_A++, last_A = i; } if (num_T > num_A) cout << "T" << endl; else if (num_T < num_A) cout << "A" << endl; else if (last_T < last_A) cout << "T" << endl; else cout << "A" << endl; }