728x90
https://www.acmicpc.net/problem/2108
최초 풀이
주요부분
최빈값을 구할 때 최대 절대값이 4000인 것을 감안하여 인덱스값으로 빈도를 누적해 줍니다.
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
int cnt[8001];// 음수 인덱스를 양수로 만들어줌
int main() {
vector<int>v;
int N, k, total = 0;
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> k;
total += k;
v.push_back(k);
cnt[k + 4000]++;
}
sort(v.begin(), v.end());
int flag;
int max = 0;
for (int i = 0; i < 8001; i++)
{
if (cnt[i] > max)
{
max = cnt[i];
flag = i;
}
}
for (int i = flag + 1; i < 8001; i++)
{
if (cnt[i] == max)
{
flag = i;
break;
}
}
cout << round(total / (1.0 * N)) << endl;
cout << v[(N-1) / 2] << endl;
cout << flag - 4000 << endl;
cout << v[N - 1] - v[0];
return 0;
}
728x90
'🥇Baekjoon Solutions > 기타' 카테고리의 다른 글
[C++] 백준 2671번: 잠수함식별 (0) | 2021.09.25 |
---|---|
[C++] 백준 11005번: 진법 변환2 (0) | 2021.09.24 |
[C++] 백준 10844번: 쉬운 계단 수 (0) | 2021.07.28 |
댓글