더 좋은 문제 풀이가 있거나 궁금하신 점이 있다면 편하게 댓글 남겨주세요!
이번 문제는 계산 과정에서의 자료형 변환과 %를 출력하는 것이 핵심이다. 이번 문제를 풀며 %를 출력하는 방법을 알게 되었다.
원래 자바 특수문자의 경우 백슬래시를 사용하여 출력하기 때문에 %도 백슬래시를 사용하지 않을까 생각했지만 %%를 사용한다. 아래의 코드를 통해 %의 출력방법을 알아보자.
다른 특수문자 출력 방법도 링크 를 통해 알아보자
System.out.printf("%.3f%%", result);
다음으로 이 문제를 풀 때 중요한 것은 자료형이다. 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력해야 함으로 이 계산에서 형변환이 필요하다.
평균을 넘는 학생들을 int cnt 변수로 선언하였고 학생의 수를 int num 으로 선언하여 평균을 넘는 학생들의 비율을 계산할때는 각각을 double로 형변환 해주었다.
double result = ((double)cnt /(double)num) * 100;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int C = sc.nextInt();
for(int i =0; i< C; i++){
int num = sc.nextInt();
int arr[] = new int[num];
int sum = 0;
for(int j = 0; j < num; j++){
arr[j] = sc.nextInt();
sum += arr[j];
}
double avg = sum / num;
int cnt = 0;
for(int k = 0; k < num; k++){
if(arr[k] > avg ) cnt++;
}
double result = ((double)cnt /(double)num) * 100;
System.out.printf("%.3f%%\n", result);
}
}
}