티스토리 뷰

728x90
반응형

문제

 

어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 

평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 

예를 들어 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이 된다.
다섯 개의 자연수가 주어질 때 이들의 평균과 중앙값을 구하는 프로그램을 작성하시오.

 

입력

 

첫째 줄부터 다섯 번째 줄까지 한 줄에 하나씩 자연수가 주어진다. 

주어지는 자연수는 100 보다 작은 10의 배수이다.

 

출력

 

첫째 줄에는 평균을 출력하고, 둘째 줄에는 중앙값을 출력한다. 

평균과 중앙값은 모두 자연수이다.

 

풀이

 

내 입장에선 스트림 연습이나 하라는 문제로 느껴진다.

 

하지만 스트림의 단점은 미리 생성해두어도 한 번 사용하고 닫히면 재사용이 불가능하다는 점..

 

해서 하는 수 없이 스트림을 두 번 열었고,

 

한 번은 평균을, 또 한 번은 정렬 후 앞의 두 개를 스킵해 중앙값을 얻었다.

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Prob2587Stream {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        List<Integer> list = new ArrayList<>();

        for (int i = 0; i < 5; i++) {
            list.add(sc.nextInt());
        }

        int ave = (int) list.stream()
                .mapToInt(Integer::intValue)
                .average()
                .getAsDouble();

        int med = list.stream()
                .sorted()
                .mapToInt(Integer::intValue)
                .skip(2)
                .findFirst()
                .getAsInt();

        System.out.println(ave);
        System.out.println(med);

    }
}
반응형

'Algorithm > [Java+Python+JavaScript]BackJoon' 카테고리의 다른 글

[BackJoon]10989번  (3) 2022.12.28
[BackJoon]2751번  (1) 2022.12.28
[BackJoon]25305번 스트림으로 풀기  (1) 2022.12.27
[BackJoon]2750번  (2) 2022.12.26
[BackJoon]2563번  (3) 2022.12.26
[BackJoon]2566번  (6) 2022.12.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함