[boj](b 1)1157単語学習


質問する


リンク

に答える


単語のアルファベットを1つずつ数えて、アルファベットの個数の配列に保存し、完全に検索することで最も多くのアルファベットを得ることができます.

注意事項

  • 大文字と小文字は区別されず、別途数える必要はありません.
    結果値は大文字で出力する必要があるため、最初はすべて大文字に変換すれば
  • である.
  • 最大数を検索する重複文
    最初の条件文に最も使用頻度の高いアルファベットが複数存在する場合は、変数flag++を使用して識別します.
    2番目の条件文なので、一番多く使われているアルファベットが複数ある場合、flagは2以上から始まります.
  • コード#コード#

    #include <iostream>
    #include <algorithm>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        ios_base::sync_with_stdio(false);
        cin.tie(NULL);
        cout.tie(NULL);
    
        int alp[26];
        fill(alp, alp + 26, 0);
    
        string str;
        cin >> str;
    
        for(int i=0;i<str.length();i++){
            if(str[i] >= 'a' && str[i] <= 'z') str[i] -= ('a'-'A'); // 대문자로 변환
            alp[int(str[i] - 'A')]++; // 카운트
        }
    
        int max_alp_idx = -1, max_cnt = -1, flag = 0;
        for (int i = 0; i < 26; i++)
        {
            if (max_cnt < alp[i]){
                max_alp_idx = i;
                max_cnt = alp[i];
                flag = 0;
            }
            if (max_cnt == alp[i])
                flag ++; // 가장 많이 사용된 알파벳이 여러 개 존재하는 경우 판별
        }
    
        if (flag >= 2)
            cout << "?" << "\n"; // 위 반복문 첫번째 조건문에서 flag가 ++ 된 후 아래 주건문에 들어가므로 가장 많이 사용된 알파벳이 여러 개 존재하는 경우는 flag가 2부터
        else
            cout << char(max_alp_idx + 'A') << "\n";
    
        return 0;
    }