1
+ package backjoon ;
2
+ // https://www.acmicpc.net/problem/2108
3
+ // 통계학
4
+ import java .io .BufferedReader ;
5
+ import java .io .IOException ;
6
+ import java .io .InputStreamReader ;
7
+
8
+ public class _2108 {
9
+ public static void main (String [] args ) throws IOException {
10
+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
11
+
12
+ //sol memory 40392 runtime 264
13
+ int N = Integer .parseInt (br .readLine ());
14
+ StringBuilder sb = new StringBuilder ();
15
+ // 입력값의 범위 : -4000 ~ 4000
16
+ int [] arr = new int [8001 ];
17
+
18
+ int sum = 0 ;
19
+ int max = Integer .MIN_VALUE ;
20
+ int min = Integer .MAX_VALUE ;
21
+
22
+ // median 과 mode 는 -4000~4000 을 제외한 수로 초기화하면 된다.
23
+ int median = 0 ;
24
+ int mode = 0 ;
25
+
26
+ for (int i = 0 ; i < N ; i ++) {
27
+ int value = Integer .parseInt (br .readLine ());
28
+ sum += value ;
29
+ arr [value + 4000 ]++;
30
+
31
+ if (max < value ) {
32
+ max = value ;
33
+ }
34
+ if (min > value ) {
35
+ min = value ;
36
+ }
37
+ }
38
+
39
+ int count = 0 ; // 중앙값 빈도 누적 수
40
+ int mode_max = 0 ; // 최빈값의 최댓값
41
+
42
+ // 이전의 동일한 최빈값이 1번만 등장했을경우 true, 아닐경우 false
43
+ boolean flag = false ;
44
+
45
+ for (int i = min + 4000 ; i <= max + 4000 ; i ++) {
46
+
47
+ if (arr [i ] > 0 ) {
48
+
49
+ // <중앙값 찾기
50
+ if (count < (N + 1 ) / 2 ) {
51
+ count += arr [i ]; // i값의 빈도수를 count 에 누적
52
+ median = i - 4000 ;
53
+ }
54
+
55
+ // 최빈값 찾기
56
+ if (mode_max < arr [i ]) {
57
+ mode_max = arr [i ];
58
+ mode = i - 4000 ;
59
+ flag = true ; // 첫 등장이므로 true 로 변경
60
+ }
61
+ // 이전 최빈값 최댓값과 동일한 경우면서 한 번만 중복되는 경우
62
+ else if (mode_max == arr [i ] && flag == true ) {
63
+ mode = i - 4000 ;
64
+ flag = false ;
65
+ }
66
+ }
67
+ }
68
+
69
+ System .out .println ((int )Math .round ((double )sum / N ));
70
+ System .out .println (median );
71
+ System .out .println (mode );
72
+ System .out .println (max - min );
73
+ }
74
+ }
75
+ /*
76
+ input
77
+ 5
78
+ 1
79
+ 3
80
+ 8
81
+ -2
82
+ 2
83
+
84
+ output
85
+ 2
86
+ 2
87
+ 1
88
+ 10
89
+ */
0 commit comments