728x90
import java.util.*;
import java.io.*;
class Main {
public static void main(String args[]) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
String student[] = new String[n];
for(int i=0; i<n; i++){
double avg = 0.0;
int c = 0;
student[i] = br.readLine();
st = new StringTokenizer(student[i]);
int tmp = Integer.parseInt(st.nextToken());
int tmps[] = new int[tmp];
int sum = 0;
for(int j=0; j<tmp; j++){
tmps[j] = Integer.parseInt(st.nextToken());
sum = sum + tmps[j];
}
avg = sum/tmp;
for(int j=0; j<tmp; j++){
if(tmps[j]>avg){
c++;
}
}
String result = String.format("%.3f",(double)c/tmp*100);
sb.append(result+"%\n");
}
br.close();
System.out.println(sb);
}
}
입력 - BufferedReader
출력 - StringBuilder
BufferedReader readLine()으로 테스트 케이스 개수를 읽어 n에 넣어줍니다.
student[] n개의 배열을 만들고 n번 만큼 반복해줍니다.
한줄씩 테스트 케이스를 읽어 배열에 담습니다.
그 줄을 Token을 통해 " " 로 잘라줍니다.
첫 번째 인자는 학생의 수입니다.
그 수 만큼 반복하며 총 학생의 점수를 구하고 임시 배열을 만들어 학생의 점수를 담습니다.
총 학생의 점수와 학생수로 평균을 구하고, 임시 배열에 담긴 학생의 점수와 평균을 비교해서
평균을 넘는 학생이 몇명인지 구합니다.
그 후 총학생의 수와 평균을 넘는 학생의 수로 비율을 구합니다.
비율을 String.format으로 소수점 세번째 자리까지 반올림하여 StringBuilder에 담은 뒤에
출력해줍니다.
728x90
'알고리즘 with JAVA' 카테고리의 다른 글
백준 4673번 셀프넘버 - 실버5 난이도, 함수 (0) | 2021.04.01 |
---|---|
백준 15596번 정수 N개의 합 (함수) (0) | 2021.03.31 |
백준 8958번 OX퀴즈 - Java (0) | 2021.03.29 |
백준 1546번 문제 : 평균 (BufferedReader, StringTokenizer) 사용 (0) | 2021.03.26 |
백준 3052번 : 나머지 자바 HashSet 사용 (0) | 2021.03.26 |