티스토리 뷰

728x90
반응형

문제

 

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

 

입력

 

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다.

점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

 

출력

 

케이스마다 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.

 

풀이

 

for문과 스트림을 이용해 풀어보았다.

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

public class Prob4344Stream {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int total = sc.nextInt();

        for (int i = 0; i < total; i++) {
            double n = sc.nextDouble(); // 결과 출력시 double로 사용하기 위해 설정
            List<Integer> list = new ArrayList<>();

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

            double ave = list.stream()
                    .mapToDouble(a -> a)
                    .average().getAsDouble();

            long top = list.stream()
                    .filter(a -> a > ave)
                    .count();

            System.out.println(String.format("%.3f", top * 100 / n)+"%");
        }
    }
}
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
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
글 보관함