Algorithm

[백준-2108번/Java] 통계학

1984 2022. 11. 12. 17:56

* 빈도값을 저장하기 위해서 HashMap 사용

* 반올림 Math.round

import java.io.*;
import java.util.*;
import java.util.Map.Entry;

public class Main {

	public static void main(String[] args) throws IOException {

		Scanner scan = new Scanner(System.in);

		int N = scan.nextInt();
		int[] numbers = new int[N];
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();
		long sum = 0;
		int max_freq = 1;

		for (int i = 0; i < N; i++) {
			int num = scan.nextInt();
			int freq;

			if (map.containsKey(num)) {
				freq = map.get(num) + 1;
			} else {
				freq = 1;
			}

			if (max_freq < freq) {
				max_freq = freq;
			}
			numbers[i] = num;
			map.put(num, freq);
			sum += num;
		}

		Arrays.sort(numbers);

		// 평균값
		System.out.println(Math.round((double) sum / N));
		// 중위값
		System.out.println(numbers[numbers.length / 2]);

		List<Integer> freq_key_list = new ArrayList();
		for (Entry<Integer, Integer> entry : map.entrySet()) {
			if (entry.getValue() == max_freq) {
				freq_key_list.add(entry.getKey());
			}
		}

		Collections.sort(freq_key_list);

		// 최빈값
		if (freq_key_list.size() > 1) {
			System.out.println(freq_key_list.get(1));
		} else {
			System.out.println(freq_key_list.get(0));
		}
		// 범위
		System.out.println(numbers[numbers.length - 1] - numbers[0]);
		scan.close();

	}

}
728x90