Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】ABC 338 B - Frequency | 茶コーダーが解くAtCoder

atcoder.jp

実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 48

問題概要

英小文字からなる文字列  S が与えられる。  S に最も多く出現する文字を出力せよ。ただし、そのような文字が複数ある場合は、アルファベット順で最も早いものを出力せよ。

制約

  •  S の長さは1以上1000以下。

考察

文字の種類と個数を管理したいのでお馴染みのmapを使っていく。

記録し終わったらvalueが最大となるkeyを全探索して求めてしまえば終了。

コード

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

using ll = long long;

#define rep(i, start, end) for (ll i = (start); i < (ll)(end); i++)

// ======================================== //

int main()
{
    string S;
    cin >> S;
    map<char, int> mp;
    rep(i, 0, S.size()) mp[S[i]]++;

    int max = 0;
    char ans;
    for (auto &&m : mp)
    {
        if (m.second > max)
        {
            max = m.second;
            ans = m.first;
        }
    }

    cout << ans << endl;
}

atcoder.jp

実装時間: 5分以内