대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
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
40.000%
57.143%
33.333%
66.667%
55.556%
이중 for
문을 사용한다.
i
)BufferedReader.readLine()
으로 데이터를 입력 받는다.StringTokenizer.nextToken()
으로 학생 수(n
)를 추출하여 점수를 저장할 배열(students
)을 선언한다.sum
) 및 평균 및 학생수 비율(avg
)을 저장할 변수를 선언하고 초기화 한다.j
)StringTokenizer.nextToken()
으로 점수를 추출하여 배열 studendts
에 저장하며 점수 합계(sum
)을 구하고, 루프가 종료되면 점수 합계와 학생 수를 이용하여 점수 평균(avg
)을 구한다.if
)을 이용하여 점수가 평균이 넘는 학생 수(cnt
)를 구한 뒤, 루프가 종료되면 평균이 넘는 학생 수와 입력받은 학생 수를 이용하여 학생 비율(avg
)을 구한다.BufferedWriter.write()
와 ①String.format()
혹은 ②Math.round()
를 이용하여 학생 비율(avg
)을 출력한다.import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int c = Integer.parseInt(br.readLine()); // 테스트 케이스 개수 입력
for(int i=0; i<c; i++) {
StringTokenizer st = new StringTokenizer(br.readLine()); // 테스트 케이스 입력
int n = Integer.parseInt(st.nextToken()); // 학생 수 추출
int[] students = new int[n]; // 학생 점수 저장할 배열
int sum = 0; // 합계 초기화
double avg = 0; // 평균 및 학생수 비율로 사용할 변수 초기화
for(int j=0; j<n; j++) {
students[j] = Integer.parseInt(st.nextToken()); // 점수 추출하여 학생 배열에 저장
sum += students[j]; // 점수 합계 구하기
}
avg = (double)sum/n; // 점수 평균 구하기
int cnt=0; // 평균 넘는 학생수
for(int j=0; j<n; j++) {
if((double)students[j] > avg) // 점수가 평균을 넘는다면
cnt++;
}
avg = (double)cnt/n*100; // 학생 수 비율 구하기
bw.write(String.format("%.3f%%", avg));
bw.newLine();
}
bw.flush();
bw.close();
}
}