728x90
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Statistics {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] arr = new int[N];
int sum = 0;
Map<Integer, Integer> frequency = new HashMap<>();
for (int i = 0; i < N; i++) {
arr[i] = sc.nextInt();
sum += arr[i];
// 빈도 계산위한 값 입력
frequency.put(arr[i], frequency.getOrDefault(arr[i], 0) + 1);
}
// 배열 정렬
Arrays.sort(arr);
// 산술 평균 계산 (소수 첫째 자리에서 반올림)
double mean = (double) sum / N;
System.out.println(Math.round(mean));
// 중앙값 계산
System.out.println(arr[N / 2]);
int maxFreq = 0;
int mode = arr[0];
boolean second = false;
for (Map.Entry<Integer, Integer> entry : frequency.entrySet()) {
int value = entry.getKey();
int freq = entry.getValue();
if (freq > maxFreq) {
maxFreq = freq;
mode = value;
second = false;
} else if (freq == maxFreq && !second) {
mode = value;
second = true; // 최빈값 중 두 번째로 작은 값
}
}
System.out.println(mode);
// 범위 계산
System.out.println(arr[N - 1] - arr[0]);
}
}
import java.util.*;
public class Statistics {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] arr = new int[N];
int sum = 0;
Map<Integer, Integer> frequency = new HashMap<>();
for (int i = 0; i < N; i++) {
arr[i] = sc.nextInt();
sum += arr[i];
// 빈도 계산
frequency.put(arr[i], frequency.getOrDefault(arr[i], 0) + 1);
}
// 배열 정렬
Arrays.sort(arr);
// 산술 평균 계산 (소수 첫째 자리에서 반올림)
double mean = (double) sum / N;
System.out.println(Math.round(mean));
// 중앙값 계산
System.out.println(arr[N / 2]);
// 최빈값 계산 (여러 개일 경우 두 번째로 작은 값 출력)
int maxFreq = 0;
List<Integer> modes = new ArrayList<>();
for (Map.Entry<Integer, Integer> entry : frequency.entrySet()) {
int value = entry.getKey();
int freq = entry.getValue();
if (freq > maxFreq) {
maxFreq = freq;
modes.clear();
modes.add(value);
} else if (freq == maxFreq) {
modes.add(value);
}
}
// 최빈값 중 두 번째로 작은 값 선택
Collections.sort(modes);
if (modes.size() > 1) {
System.out.println(modes.get(1)); // 두 번째로 작은 최빈값
} else {
System.out.println(modes.get(0)); // 최빈값이 하나일 경우
}
// 범위 계산
System.out.println(arr[N - 1] - arr[0]);
}
}
예외 처리나 중복값을 생각하지 않고 짜서 실수를 한 것같다. 오류인 부분을 찾지 못해 chatGPT에 돌려보니 아래와 같이 나오게 되었다.
728x90
'백준' 카테고리의 다른 글
백준 27433 - Java (0) | 2024.09.14 |
---|---|
백준 20920 - Java (0) | 2024.09.12 |
백준 26069 - Java (0) | 2024.09.12 |
백준 25192 - Java (0) | 2024.09.11 |
백준 1037 - Java (0) | 2024.09.11 |