코딩테스트/백준

백준 2587번 : 대표값2 [Java]

블로그 주인장 2023. 8. 28.

🎁 문제 링크

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

 

2587번: 대표값2

어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 +

www.acmicpc.net

🎁 문제 설명

어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 + 30) / 5 = 170 / 5 = 34가 된다. 

평균 이외의 또 다른 대표값으로 중앙값이라는 것이 있다. 중앙값은 주어진 수를 크기 순서대로 늘어 놓았을 때 가장 중앙에 놓인 값이다. 

예를 들어 10, 40, 30, 60, 30의 경우, 크기 순서대로 늘어 놓으면 10 30 30 40 60 이 되고 따라서 중앙값은 30이 된다. 

다섯 개의 자연수가 주어질 때 이들의 평균과 중앙값을 구하는 프로그램을 작성하시오.

🎁 입출력 예시

🎁 코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        List<Integer> list = new ArrayList<>();

        int sum = 0;
        int max = 5;
        for (int i = 0; i < max; i++) {
            int j = Integer.parseInt(br.readLine());
            sum += j;
            list.add(j);
        }

        int average = sum / max;
        System.out.println(average);

        list.sort(Comparator.naturalOrder());
        int mid = list.get(max / 2);
        System.out.println(mid);
    }
}

🎁 풀이

1) BufferedReader를 통해 5개의 입력값을 받는다.

2) sum에 값을 전부 더해주면서,  ArrayList를 하나 생성해서 값을 넣어준다.

3) 평균값을 출력해주고, List를 오름차순으로 정렬해주면서 중앙값을 출력해준다.

반응형

댓글