728x90
 

4344번: 평균은 넘겠지

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

www.acmicpc.net

문제

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

입력

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

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

출력

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

풀이

변수의 타입에 주의해야 하는 문제이다. int와 double 간의 연산을 제대로 해 주지 않으면 에러를 출력하기 때문이다.

코드
import java.util.Scanner;

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

        int n = sc.nextInt();
        int total, count;
        double avg;
        for (int i=0; i<n; ++i) {
            int k = sc.nextInt();
            int[] score = new int[k];
            total = 0;
            for (int j = 0; j < k; j++) {
                score[j] = sc.nextInt();
                total += score[j];
            }
            // total과 k 모두 int형이므로 double형으로 변환하여 avg 값을 초기화 해준다.
            avg = (double)total / k;
            count = 0;
            for (int j = 0; j < k; j++) {
                if (avg < score[j]) {
                    count++;
                }
            }
            // 100.0을 곱해 줘야 실수형으로 반환되어 정상적으로 값이 출력된다.
            System.out.printf("%.3f", 100.0 * count/k);
            System.out.println("%");
        }
        sc.close();
    }
}

 

  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기