Official

A - アルファベット分類 / Alphabet Classification Editorial by physics0523


初心者の方へ


\(N\) 個の文字列を読み込み、頭文字が a, b, …, z であるものがいくつあるか数え、最大値を出力すればよいです。
バケットソート の要領で解くとよいです。例えば、以下のようにします。

  • 長さ \(26\) の配列 \(A\) を用意する。最初、 \(A\) の要素は全て \(0\) です。
  • \(i=1,2,\dots,N\) について、以下を繰り返す。
    • \(S_i\) の頭文字を \(c\) とする。
    • \(c\) が英小文字の \(k\) 番目である場合、 \(A[k]\)\(1\) 加算する。
  • \(A\) の最大値を出力する。

一連の流れは、 for 文等を用いて実現できます。

実装例 (C++):

#include<bits/stdc++.h>

using namespace std;

int main(){
  int N;
  cin >> N;
  vector<int> bk(26,0);
  for(int i=0;i<N;i++){
    string S;
    cin >> S;
    bk[S[0]-'a']++;
  }
  cout << (*max_element(bk.begin(),bk.end())) << "\n";
  return 0;
}

posted:
last update: