map などの連想配列を用いて、集計処理しよう!
問題概要
選挙で 人が投票し、それぞれ名前が
である候補者に投票した。
得票数が最大の候補者の名前を答えよ。なお、得票数が最大の候補者は一意に定まることが保証される。
制約
考えたこと
各文字列が何個ずつあるのかを集計しょう! 具体的には、次の連想配列を用意しよう。C++ では、map<string, int> 型が適している(Python では辞書型が適している)。
ma[str]← 名前がstrである候補者の得票数
集計処理を終えたあとは、ma[str] の値が最大であるような str を探索すればよい。
map 型の使い方については、下のコードを参照。
コード
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; map<string, int> ma; for (int i = 0; i < N; i++) { string S; cin >> S; ma[S]++; } int max_num = 0; string max_str = ""; for (auto [str, num] : ma) { if (num > max_num) { // 最大値を更新するとき max_num = num; max_str = str; } } cout << max_str << endl; }