최빈값이 좀 어려웠다..
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] freq = new int[8001];// 빈도수 (0~8000)
int[] num = new int[n];// 입력받은 값이 오름차순대로 들어간 배열
int sum = 0;// 합계
int index = 0;
int maxFre[] = new int[2];// 최빈값
Arrays.fill(maxFre, 0);// 최빈값 0으로 초기화
for (int i = 0; i < n; i++) {
int inputNum = sc.nextInt();
sum += inputNum;
freq[inputNum + 4000]++;
}
for (int j = 0; j <= 8000; j++) {
if (freq[j] > 0) {
for (int k = 0; k < freq[j]; k++) {
num[index] = j - 4000;// 오름차순으로 입력받은 값들을 넣어줌
index++;
}
if (freq[maxFre[0]] < freq[j]) {// 최빈값이 나오면
maxFre[0] = j; // 첫번째로 작은값에 최빈값 넣기
maxFre[1] = maxFre[0]; // 두번째로 작은값에도 일단 같은값 넣기
} else if (freq[maxFre[0]] == freq[j] && maxFre[1] == maxFre[0]) { // 여러 최빈값이 나올시에는
maxFre[1] = j;// 두번째로 작은값만 셋팅
}
}
}
System.out.println((int) Math.round((double) sum / n));// 산술평균
System.out.println(num[n / 2]);// 중앙값
System.out.println(maxFre[1] - 4000);// 최빈값
System.out.println(num[n - 1] - num[0]);// 범위(최대값 - 최소값)
}
}
'알고리즘 > 백준' 카테고리의 다른 글
백준 11650 좌표 정렬하기 자바 (0) | 2020.02.19 |
---|---|
백준 1427 소트인사이드 자바 (0) | 2020.02.18 |
백준 10989 수 정렬하기 3 자바 (0) | 2020.01.31 |
백준 2751 수 정렬하기 2 자바 (0) | 2020.01.30 |
백준 2750 수 정렬하기 자바 (0) | 2020.01.29 |
댓글