Official
A - Decisive Battle Editorial
by
A - Decisive Battle Editorial
by
physics0523
AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題 A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
問題文中にもある通り、 \(S\) の長さは奇数なので E, W が \(S\) 中に同数含まれることはありえず、 E, W どちらかがもう一方より真に多いです。
どちらが多いかの判定法には色々ありますが、一例を示します。
- 変数 \(h=0\) を用意する。
- \(S\) を \(1\) 文字ずつ調べ、出てきた文字が
Eなら \(h\) に \(1\) 加算、Wなら \(h\) から \(1\) 減算するということを \(S\) の全ての文字について繰り返す。 - 全文字を調べた後、 \(h>0\) なら
Eがより多く、そうでなければWがより多い。
こうすることで、具体的にどちらがいくつかあるかの情報を捨てる代わりに、変数ひとつでどちらが多数派かを判定できます。
一連の実装は、例えば for 文と if 文を組み合わせることで実現可能です。
実装例 (C++):
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin >> s;
int h=0;
for(auto &nx : s){
if(nx=='E'){h++;}
else{h--;}
}
if(h>0){cout << "East\n";}
else{cout << "West\n";}
return 0;
}
posted:
last update:
