728x90

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

 

4344번: 평균은 넘겠지

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

www.acmicpc.net

문제

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

 

풀이

학생 수와 각 학생들의 점수를 입력받으면, 평균보다 높은 학생의 비율을 출력하는 문제이다.

여기서 주의할 점이 하나 있는데, 비율을 출력할 때 소수점 셋째 자리까지 반올림하여 출력해야 한다는 것이다.

이 조건은 String.format() 메서드를 이용하면 해결할 수 있다. 코드는 아래와 같다. (ratio : 비율)

String.format("%.3f", ratio)

%. 3f이 소수점 셋째 자리까지 반올림해 준다.

 

나머지 과정은 크게 어렵지 않았다.

배열에 학생들의 점수를 입력받고, 평균을 구한 뒤 평균보다 높은 학생들의 수를 구해서 비율을 구하면 된다.

 

코드

BufferedReader 클래스 StringBuilder 클래스를 이용한 코드

import java.io.*;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        StringBuilder sb = new StringBuilder();
        int C = Integer.parseInt(br.readLine());

        for(int i = 0; i < C; i++) {
            st = new StringTokenizer(br.readLine());
            int N = Integer.parseInt(st.nextToken());

            int[] score = new int[N];
            double sum = 0;
            for(int j = 0; j < N; j++) {
                score[j] = Integer.parseInt(st.nextToken());
                sum += score[j];
            }
            double average = sum / N;
            double count = 0;
            for(int k = 0; k < N; k++) {
                if(score[k] > average) count++;
            }
            double ratio =  count / N * 100;

            sb.append(String.format("%.3f", ratio)).append("%\n");
        }
        System.out.println(sb);
    }
}

 

틀린 부분이 있다면 정정해 주시면 감사하겠습니다.
궁금한 부분이 있거나, 다른 아이디어가 있으시면 자유롭게 댓글 남겨주세요!

728x90

+ Recent posts