JAVA/백준 알고리즘
[백준] 4344번 평균은 넘겠지 - Java
코딩전사_추추
2022. 4. 14. 20:56
728x90
반응형
1. 문제
4344번: 평균은 넘겠지
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
www.acmicpc.net
문제
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
입력
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
출력
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
예제 입력 1 복사
5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91
예제 출력 1 복사
40.000%
57.143%
33.333%
66.667%
55.556%
2. 문제 풀이
- 테스트 케이스 C를 입력받는다.
- 각 테스트 케이스마다 평균을 넘는 학생들의 비율을 저장할 길이가 C인 float 배열을 만든다.
- 학생의 수 N을 입력받고, 학생의 점수를 담을 score 배열을 만든다.
- 총점수(total), 평균값(mid), 평균값보다 작은 사람의 수를 세는 변수(count)를 선언한다.
- for문을 통해 학생의 점수를 다 더하고 평균값을 구한다.
- 다시 for문을 돌면서 평균보다 작은 학생수를 count 한다.
- 학생수를 구한 후 비율 result 배열에 담는다. (그냥 출력해도 될 것 같다.)
- result 배열을 출력한다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int c = sc.nextInt();
float[] result = new float[c];
for (int i = 0; i < c; i++) {
int student = sc.nextInt();
int[] score = new int[student];
int total = 0;
int mid = 0;
int count = 0;
for (int j = 0; j < student; j++) {
score[j] = sc.nextInt();
total += score[j];
}
mid = total / student;
for (int j = 0; j < score.length; j++) {
if (score[j] > mid) {
count++;
}
}
result[i] = ((float)count/student)*100;
}
for(int j = 0; j < result.length; j++) {
System.out.println(String.format("%.3f", result[j]) + "%");
}
}
}
728x90
반응형