본문 바로가기

코딩테스트

백준2108

수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자.

  1. 산술평균 : N개의 수들의 합을 N으로 나눈 값

  2. 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값

  3. 최빈값 : N개의 수들 중 가장 많이 나타나는 값

  4. 범위 : N개의 수들 중 최댓값과 최솟값의 차이

N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오.

https://www.acmicpc.net/problem/2108

 

2108번: 통계학

첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.

www.acmicpc.net

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.util.*;
//백준2108
public class bj_17 {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int[]num=new int[n];
        int[]much= new int[8001]; //최빈값 
 
        double sum=0;
        
        for(int i=0;i<num.length;i++){
            num[i]=in.nextInt();
            sum+=num[i];
            much[num[i] + 4000]++;
        }
        
        Arrays.sort(num);
        
        int min = 0;
 
        for(int i = 0; i < much.length; i++) {
            if(min < much[i]) {
                min = much[i];    //    최빈값을 계산한다.
            }
        }
        
        int[] two_min = new int[2];    //    가장 많이 나타나는 값이 여러 개일 경우를 위한 배열
        int j = 0;
        
        for(int i = 0; i < much.length; i++) {
            if(two_min[0!= 0 && two_min[1!= 0)
                break;
            
            if(min == much[i]) {
                two_min[j] = i;
                j++;
            }
        }    //    최빈값중 두 번째로 작은 값을 넣기위함.
        
        if(two_min[1== 0){
            two_min[1= two_min[0];
        }
        
        
        System.out.println(Math.round(sum/n));
        System.out.println(num[n/2]);
        System.out.println(two_min[1- 4000);
        System.out.println(num[n-1]-num[0]);
    
    }
}
 
 
cs

'코딩테스트' 카테고리의 다른 글

백준9461  (0) 2020.12.28
백준1475  (0) 2020.12.27
백준1181  (0) 2020.12.27
백준2675  (0) 2020.12.27
백준10814  (0) 2020.12.27