반응형
-해법
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int t = in.nextInt(); // 테스트 케이스 수
int arr[], student, sum, avg, cnt; // 점수 저장 배열, 학생 수, 총점, 평균, 평균 이상의 학생 수 변수
for(int i=0;i<t;i++){ // 테스트 케이스 수 반복
student = in.nextInt(); // 학생 수 입력
arr = new int[student]; // 학생 수 만큼 배열 생성
// 연산에 사용될 변수들 초기화
sum=0;
avg=0;
cnt=0;
//
for(int j=0;j<arr.length;j++) { // 학생들 점수 입력 반복
arr[j] = in.nextInt();
sum+=arr[j]; // 총점 계산
}
avg = sum / student; // 평균 계산
for(int j=0;j<arr.length;j++) { // 평균점수 이상의 학생 수를 찾는 반복
if(arr[j]>avg) {
cnt++; // 평균점수 이상의 학생 수 증가
}
}
// 평균점수 이상의 학생 비율 및 출력 포맷
System.out.println(String.format("%.3f",(double)cnt/student * 100)+"%");
}
in.close();
}
}
개인적으로 이 문제에서 원하는 출력 결과는 뽑아냈지만, 마지막에 출력 과정에서 소수점 출력 포맷에 익숙하지 않아 검색을 좀 해보았다. printf()를 사용한다거나 DecimalFormat, Math.round() 등 다양한 방법이 있는데 개인적으로는 String.format()을 사용해서 출력하는 것이 편하다고 생각한다. 주의해야 할 점은 모든 계산의 과정이 정수 형태로 이루어졌기 때문에 비율을 출력 시 (double)로 캐스팅해주어야 소수점까지 제대로 표현이 된다!
반응형