[알고리즘]백준2108 통계학-java

kimjingwon·2022년 7월 8일
0

1. 문제

2. 생각

  1. 평균은 입력받으면서 모든 요소를 더하고 n만큼 으로 나눈뒤 math.round함수로 반올림한다.

  2. 중앙값은 배열을 arrays.sort로 정렬한뒤 중앙값을 출력한다.

  3. 최빈값은 정렬된 배열을 0부터 n까지 반복하는데
    같은값이 나오면 count++,다른값이면 count=0으로 초기화
    각 count중에서 가장 큰경우 max로 저장 그 때 배열[i]를 출력

  4. 범위는 정렬된 배열에서 배열[n]-배열[0]을 출력한다.

3. 코드

import java.util.Arrays;
import java.util.Scanner;

public class baekjoon2108 {
    public static void main(String[]args){
        Scanner scan= new Scanner(System.in);

        int n=scan.nextInt();
        int a[]=new int[n];
        double s1=0;
        for(int i=0;i<n;i++){
            a[i]=scan.nextInt();
            s1+=a[i];
        }
        s1/=n;
        System.out.println(Math.round(s1));
        Arrays.sort(a);
        int s2=a[n/2];
        System.out.println(s2);

        int count = 0;
        int max = -1;
        int mod = a[0];
        boolean check = false;
        for(int i = 0; i < n - 1; i++) {
            if(a[i] == a[i + 1]) {
                count++;
            }else {
                count = 0;
            }

            if(max < count) {
                max = count;
                mod = a[i];
                check = true;
            }else if(max == count && check == true) {
                mod = a[i];
                check = false;
            }
        }


        System.out.println(mod);

        int s4=a[n-1]-a[0];
        System.out.println(s4);
    }
}

0개의 댓글