https://www.acmicpc.net/problem/2108
2108번: 통계학
첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.
www.acmicpc.net
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] cnt = new int[8001];
int maxCnt = 0;
double avg = 0;
for (int i = 0; i < N; i++) {
int num = Integer.parseInt(br.readLine()) + 4000;
if (maxCnt < ++cnt[num]) ++maxCnt;
avg += num;
}
// 산술 평균
avg = (avg / N) - 4000;
// 중앙값
int half = N / 2 + 1;
int mid, j = 0;
for (mid = 0; mid < 8001; mid++) {
j += cnt[mid];
if (half <= j) break;
}
// 최빈값
boolean flag = false;
int num = 0;
for (int i = 0; i < 8001; i++) {
if (cnt[i] == maxCnt) {
num = i;
if (flag) break;
else flag = true;
}
}
// 범위
int head;
for (head = 0; head < 8001; head++) {
if (cnt[head] != 0) break;
}
int tail;
for (tail = 8000; tail >= 0; tail--) {
if (cnt[tail] != 0) break;
}
System.out.print(Math.round(avg) + "\n" + (mid - 4000) + "\n" + (num - 4000) + "\n" + (tail - head));
}
}
'OJ' 카테고리의 다른 글
[BOJ] 1021 회전하는 큐 (JAVA) (0) | 2023.07.21 |
---|---|
[BOJ] 1789 수들의 합 (JAVA) (0) | 2023.07.20 |
[BOJ] 15558 점프 게임 (JAVA) (0) | 2023.07.18 |
[BOJ] 26091 현대모비스 소프트웨어 아카데미 (JAVA) (0) | 2023.07.17 |
[BOJ] 9019 DSLR (JAVA) (0) | 2023.07.16 |