Algorithm/baekjoon

통계학

마닐라 2021. 12. 27. 13:03

📍 문제 설명

💡 접근

산술 평균, 중앙 값, 범위에 대해서는 별 문제 없이 풀었다.

하지만 최빈값에서 계수 정렬을 하려고 하니 음수 값도 들어와서 문제가 생겼다.

 

일단 맵에 해당 숫자의 키와 갯수를 넣어뒀다.

그리고 최빈값이 등장할 때 마다 리스트를 초기화시키면서 최빈값이 여러개 나올 때만 더해주는 식으로 했다.

 

👩‍💻 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        int[] arr = new int[n];

        for(int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(br.readLine());
        }

        //산술 평균
        double sum = 0;
        for(int i = 0; i < n; i++) {
            sum += arr[i];
        }
        System.out.println(String.format("%.0f", sum/n));

        //중앙값
        int[] clone = arr.clone();
        Arrays.sort(clone);
        System.out.println(clone[clone.length/2]);

        //최빈값
        HashMap<Integer,Integer> map = new HashMap<>();
        for(int x : arr) {
            map.put(x, map.getOrDefault(x, 0) + 1);
        }
        int max1 = Integer.MIN_VALUE;
        int key = 0;
        ArrayList<Integer> list = new ArrayList<>();
        //키들을 탐색
        for(int x : map.keySet()) {
            //최빈값을 찾았을 때
            if(map.get(x) > max1) {
                max1 = map.get(x);
                list.clear();
                list.add(x);
            }
            //최빈값이 겹칠 때
            else if(map.get(x) == max1) {
                list.add(x);
            }
        }
        Collections.sort(list);

        if(list.size() > 1) System.out.println(list.get(1));
        else System.out.println(list.get(0));

        //최댓값과 최솟값의 차
        int max = Arrays.stream(arr).max().getAsInt();
        int min = Arrays.stream(arr).min().getAsInt();
        System.out.println(max-min);

    }
}

'Algorithm > baekjoon' 카테고리의 다른 글

N과 M (1)  (0) 2021.12.27
단어 정렬  (0) 2021.12.27
한수  (0) 2021.12.26
제로  (0) 2021.12.26
덩치  (0) 2021.12.26