해결방법
숫자를 입력받고, 그 숫자의 빈도를 찾아서 가장 빈도가 높은 수를 찾는 방법을 구해야 한다.
이 경우에는 map함수를 사용해서 S[j]를 입력받고 S[j]값의 빈도를 1 증가시키는 방식으로 빈도가 높은 수를 찾았다.
정답 코드
#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main()
{
int N, V;
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> V;
vector<int> S(V);
map<int, int> freq;
for (int j = 0; j < V; j++)
{
cin >> S[j];
freq[S[j]]++;
}
int max = 0;
int answer = 1001;
for (auto& entry : freq)
{
int number = entry.first;
int count = entry.second;
if (count > max || (count == max && number < answer))
{
max = count;
answer = number;
}
}
cout << answer << endl;
}
return 0;
}
'코딩테스트' 카테고리의 다른 글
BOJ - 2010 플러그 (0) | 2024.11.05 |
---|---|
BOJ - 13458 시험 감독 (0) | 2024.10.28 |
BOJ - 11557 Yangjojang of The Year (0) | 2024.10.15 |
BOJ - 17173 배수들의 합 (0) | 2024.10.14 |
BOJ - 1934 최소공배수 (0) | 2024.10.07 |