728x90
문제
대학생 새내기들의 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();
}
}
'PS > Python' 카테고리의 다른 글
[BOJ / Java / 문자열] 1316 - 그룹 단어 체커 (0) | 2020.11.14 |
---|---|
[BOJ / Java / 브루트포스] 1065 - 한수 (0) | 2020.11.13 |
[BOJ / Java] 10818 - 최소, 최대 (0) | 2020.11.12 |
[스택][BOJ / Python] 10773 - 제로 (0) | 2020.10.21 |
[수학][BOJ / Python] 2775 - 부녀회장이 될테야 (2) | 2020.10.21 |
최근댓글