[Java] 백준(브론즈-2) 2587번 - 대표값2

문제 풀이
문제의 요구사항은 주어진 5개의 값들의 평균값과 중앙값을 구하는 것이다.
값들을 더해 평균을 구하고 값들이 정렬된 상태에서 중앙값을 구하는 것은 크게 어렵지 않다.
아이디어 도출
- 주어진 5개의 값들을 배열로 만든다.
- 5개의 값들을 더하고, 5로 나누어 평균값을 구한다.
- 5개의 값이 들어있는 배열을 오름차순으로 정렬하고, 세번째 인덱스로 접근하여 중앙값을 구한다.
아이디어는 간단하니 바로 코드를 작성해보자.
1
2
int[] arr = new int[5];
int avr = 0;
먼저 5개의 값들을 담을 1차원 배열 arr를 선언하고, 평균값을 구할 avr 변수를 하나 생성하자.
1
2
3
4
5
6
7
8
9
10
for(int i=0; i<5; i++) {
arr[i] = Integer.parseInt(br.readLine());
avr += arr[i];
}
Arrays.sort(arr);
avr = avr/5;
bw.write(avr+"\n");
bw.write(arr[5/2]+"\n");
평균값은 5개의 값들을 더해준 avr 변수를 5로 나눈 값으로 구할 수 있고,
중앙값은 5개의 값들을 저장한 arr 배열을 오름차순으로 정렬한 후, arr[배열의 길이/2]로 접근하여 중앙값을 구할 수 있다.
작성코드
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
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int[] arr = new int[5];
int avr = 0;
for(int i=0; i<5; i++) {
arr[i] = Integer.parseInt(br.readLine());
avr += arr[i];
}
Arrays.sort(arr);
avr = avr/5;
bw.write(avr+"\n");
bw.write(arr[5/2]+"\n");
bw.flush();
bw.close();
br.close();
}
}
회고
- 1차원 배열에 값을 저장해두고 5개의 고정된 홀수 길이인 점을 고려해, 중앙값을 쉽게 구할 수 있었다.