けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 287 A - Majority (7Q, 灰色, 100 点)

文字列を  N 個受け取る型式に慣れよう!

問題概要

 N は奇数である。

 N 個の文字列  S_{1}, S_{2}, \dots, S_{N} が与えられる。各文字列は "For" か "Againist" かのいずれかである。

"For" が過半数を占めるかどうかを判定せよ。

制約

  •  N は 1 以上 99 以下の奇数

考えたこと

 N 個の文字列を順に受け取って、"For" の個数を数えよう。その個数が N / 2 個より大きければ "Yes" である。

 N 個の文字列の入力は vector<string> 型の変数として受け取ってもいいし、入力を保存せずに "For" であったらカウントするような処理をしてもよい。

下の実装例では後者で実装した。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int N;
    cin >> N;

    int for_num = 0;
    for (int i = 0; i < N; i++) {
        string S;
        cin >> S;
        if (S == "For") for_num++;
    }
    if (for_num > N / 2) cout << "Yes" << endl;
    else cout << "No" << endl;
}