어떤 정수가 많이 나왔는지 출력하는 문제이다. 단, 나온 횟수가 같은 정수끼리는 서로 크기를 비교해서 작은 정수만 출력.
1 5 5 3 3인 경우 끝까지 다 돌아봐야 어떤 값이 가장 큰 value인지 알 수 있다.
위 경우 3의 value가 가장 큰 수로 result에 저장되어 있으나, map이 삽입될때 자동으로 오름차순으로 정렬되어 저장되는 것을 감안하면 3이 출력이 될 것이다.
#include <iostream>
#include <map>
using namespace std;
int main(int argc, char* argv[])
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n;
cin >> n;
map<long long, int> m;
int result = 0;
long long input;
for (int i = 0; i < n; i++)
{
cin >> input;
m[input]++;
}
map<long long, int>::iterator iter = m.begin();
map<long long, int>::iterator iterEnd = m.end();
for (; iter != iterEnd; iter++)
result = max(iter->second, result);
for (iter = m.begin(); iter != iterEnd; iter++)
if (iter->second == result)
{
cout << iter->first;
break;
}
return 0;
}