A - Alphabet appearance rate

2 secs 1024 MB
kusirakusira's icon kusirakusira

この問題ではプログラミングの基礎文法である if 文と for 文を組み合わせて解くことが出来ます。 実装のヒントは問題文に書いてあるので、それ通りに実装をしましょう。

文字 αα が登場している単語の数を CαC_α とし、各英小文字が出現している単語数を CaCb...CzC_a C_b ... C_z とします。

以下のステップをたどることでこの問題を解くことが出来ます。

  1. 各文字の登場回数を表す配列 CC を作ります。CiC_iii 文字目の英小文字の出現回数と対応します。
  2. for 文をまわして各単語についてみます。各英小文字がその単語内にあるか判定ならば、存在するならばそれに対応するものをインクリメントします。
    in 演算子を用いることで存在判定を容易に実装することが出来ます。
  3. 配列 CC の最大値を出力します。
Python
n = int(input())
S = []
for i in range(n):
    s = input()
    S.append(s)

E = list("abcdefghijklmnopqrstuvwxyz")
C = [0] * 26
for i in range(n):
    for j in range(26):
        if(E[j] in S[i]):
            C[j] += 1

print(max(C))
C++
#include<bits/stdc++.h>
using namespace std;

int main() {
    
    int n;
    cin >> n;
    vector<string> s(n);
    for (int i = 0; i < n; i++) cin >> s[i];

    int maxCount = 0;
    
    for (int i = 0; i < 26; i++) {

        int count = 0;
        for (int j = 0; j < n; j++) {
            for (int k = 0; k < s[j].size(); k++) {
                if (s[j][k] - 'a' == i) {
                    count++;
                    break;
                }
            }
        }

        maxCount = max(maxCount, count);
    }

    cout << maxCount << endl;
}