문제
풀이
입력받은 테스트케이스 수 만큼 반복문을 돌리면서 배열에 성적을 저장하고, 동시에 누적 합을 같이 구해준다. 이후에 평균 성적을 구하고 배열에 저장된 성적들과 비교한 뒤 몇 명의 학생이 평균보다 높은지 카운트하면 된다.
참고로 printf에서 "%"라는 문자를 출력하려면 %%로 적어줘야한다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 테스트케이스 수
int num = Integer.parseInt(br.readLine());
int[] arr;
StringTokenizer st;
// 학생 수 만큼의 길이를 갖는 배열 생성
for(int i=0; i<num; i++) {
// 학생 수와 성적을 공백으로 구분 받아서 입력받기
st = new StringTokenizer(br.readLine(), " ");
// 학생 수 설정
int student = Integer.parseInt(st.nextToken());
arr = new int[student];
// 성적 누적 합
double sum = 0;
// 성적 입력
for(int j=0; j<student; j++) {
int grade = Integer.parseInt(st.nextToken());
arr[j] = grade;
// 누적해서 더하기
sum += grade;
}
// 평균 구하기
double avg = (sum/student);
// 평균 넘는 학생 카운트
double cnt = 0;
for(int j=0; j<student; j++) {
// 평균보다 높은 점수를 가진 학생이 있다면
if(arr[j] > avg) {
// 카운트 증가
cnt++;
}
}
System.out.printf("%.3f%%\n",(cnt/student)*100);
}
}
}
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 직사각형 별찍기 - JS (0) | 2021.09.30 |
---|---|
[백준/JAVA] 8598 OX퀴즈 (0) | 2021.04.29 |
[백준/JAVA] 1546 평균 (StringTokenizer 주의점) (0) | 2021.04.29 |
[백준/JAVA] 3052 나머지 (배열, Hashset 사용) (0) | 2021.04.29 |