Dev.baelanche

[백준 2108] 통계학 본문

Data Structure & Algorithm/PS - JAVA

[백준 2108] 통계학

baelanche 2019. 6. 8. 15:30
반응형

 

네개의 값을 다음과 같은 방법으로 구했다.

산술평균 : 입력받을 정수들을 모두 더해 n으로 나누어 반올림

중앙값 : 배열을 정렬해 가운데 배열의 값을 출력

최빈값 : 인덱스, 빈도 횟수를 담은 클래스를 만들어 정렬한 후 최빈값(여러 개 일시 두번째 값) 출력

범위 : 최대값 - 최소값

 

 

public class Main {
    
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int n = Integer.parseInt(br.readLine());
        int a[] = new int[n];
        Pair fre[] = new Pair[8001];
        for(int i=-4000; i<fre.length/2+1; i++)
            fre[i+4000] = new Pair(i, 0);
        
        int sum = 0;
        int min = 4001;
        int max = -4001;
        for(int i=0; i<n; i++) {
            a[i] = Integer.parseInt(br.readLine());
            sum += a[i];
            min = a[i] < min ? a[i] : min;
            max = a[i] > max ? a[i] : max;
            fre[a[i] + 4000].cnt++;
        }
        
        Arrays.sort(a);
        Arrays.sort(fre);
        
        int second = fre[0].cnt == fre[1].cnt ? fre[1].x : fre[0].x;
        
        bw.write((Math.round((float)sum/n)) + "\n");
        bw.write(a[n/2] + "\n");
        bw.write(second + "\n");
        bw.write(max - min + "\n");
        bw.flush();
    }
    
    static class Pair implements Comparable<Pair> {
        int x;
        int cnt;
        
        Pair(int x, int cnt) {
            this.x = x;
            this.cnt = cnt;
        }
        
        public int compareTo(Pair o) {
            return o.cnt - this.cnt;
        }
    }
}

 

 

입력값에 음수가 온다는 것을 유의해야 한다.

 

Pair 클래스 정렬방법은 카운트 내림차순 > 기본 인덱스 오름차순 순으로 정렬된다.

반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 1890] 점프  (0) 2019.06.08
[백준 7569] 토마토  (0) 2019.06.08
[백준 9020] 골드바흐의 추측  (0) 2019.06.08
[백준 1080] 행렬  (0) 2019.06.04
[백준 1541] 잃어버린 괄호  (0) 2019.06.03
Comments