ファンクラブサイトはこちら
AtCoder

【動画あり】AtCoder ABC「A – Decisive Battle」解説(C++)

mintson

問題概要

文字列 S には EW だけが含まれます。

  • E の個数 = 東軍の人数
  • W の個数 = 西軍の人数

東軍のほうが多ければ East、西軍のほうが多ければ West を出力します。
(文字列の長さは奇数なので、同数になることはありません)
https://atcoder.jp/contests/abc464/tasks/abc464_a

解説動画はYouTubeに投稿してあります!

方針

E の数だけ数えれば十分です。

  • n は奇数なので、eastの総数 > n/2 なら東軍が多い(整数除算でOK)

つまり、

  • east > n/2East
  • それ以外 → West

C++ 解答例

#include <iostream>
#include <string>

using namespace std;

int main(){
    string S;
    cin >> S;

    int east = 0;
    for(char c : S){
        if(c == 'E') east++;
    }

    if(east > (int)S.length() / 2) cout << "East";
    else cout << "West";

    return 0;
}

実装のポイント

  • for (char c : S) で1文字ずつ見て、c == 'E' のときだけカウントします
  • S.length()/2 は整数除算なので、奇数長のとき「半分より大きいか」の判定にそのまま使えます
ABOUT ME
夜猫ミント
夜猫ミント
クリエイター
2020年からネット活動をしているものです。
記事URLをコピーしました