목차
코드
#include <iostream>
using namespace std;
int main() {
int num[8001] = {0, };
int n, tmp;
scanf("%d", &n);
double avg = 0.0;
int mid = 10000, cnt = 0, min = 4000, max = -4000;
int old_mode = 4000;
int mode = 4000;
for(int i=0; i<n; i++){
scanf("%d", &tmp);
num[4000 + tmp] += 1;
if(tmp < min) min = tmp;
if(tmp > max) max = tmp;
}
for(int j=8000; j>=0; j--){
avg += (-4000 + j) * num[j];
if(mid == 10000 && cnt + num[j] >= (n / 2) + 1 ){
mid = -4000 + j;
}
else{
cnt += num[j];
}
if(num[j] > num[mode + 4000]){
old_mode = -4000 + j;
mode = -4000 + j;
}
else if(num[j] == num[mode + 4000]){
old_mode = mode;
mode = -4000 + j;
}
}
avg = avg / n;
printf("%.0f\n", avg);
printf("%d\n", mid);
printf("%d\n", old_mode);
printf("%d\n", max - min);
}
사견
풀면서 python numpy가 너무 그리웠다...
한 번 numpy 맛을 봤던 나로서는 이 문제가 너무 귀찮았다... 사랑해요 라이브러리
뭐 결국은, 귀찮을 뿐이지 어려운 문제는 아니다.
이전에 했던 카운팅 정렬로 들어온 입력값을 정렬해 준 후,
그 값들을 토대로 통계를 하면 된다.
'공부 > 백준' 카테고리의 다른 글
11650번: 좌표 정렬하기(백준 C++) (0) | 2020.11.01 |
---|---|
1427번: 소트인사이드(백준 C++) (0) | 2020.10.31 |
10989번: 수 정렬하기3(백준 C++) (0) | 2020.10.29 |
2751번: 수 정렬하기2(백준 C++) (0) | 2020.10.28 |
2750번: 수 정렬하기(백준 C++) (0) | 2020.10.27 |