[C++/アルゴリズム]白駿1157号


// 백준 1157번

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main(){

    string a;
    char A;
    int max=-2147000000, index[26] = {0,}, cnt=0;

    cin >> a;

    transform(a.begin(), a.end(), a.begin(), ::toupper);

    for(int i=0; i<=a.length(); i++){
        index[a[i]-65]++;
    }

    for(int i=0; i<26; i++){
        if(index[i] == max) {
            max = index[i];
            cnt++;
        }
        if(index[i] > max){
            max = index[i];
            A = i+65;
            cnt = 0;
        }
    }
    if(cnt == 0) cout << A << endl;
    else cout << "?" << endl;

}

  • c++string STL:文字列の大文字と小文字を変換-toupper
    transform(String.begin(), String.end(), String1.begin(),::toupper)

  • インデックス配列を使用したチェック