문제 내용은 입력으로 문제가 들어오는 갯수를 받고 이후 학생 수와 점수를 받은 뒤 학생 수 대비 평균을 넘는 학생 비율을 반올림해서 소수점 3번째 자리까지 출력해주면 되는데, 뒤에 %를 붙이는 것을 잊지 말자
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
for (int i = 0; i < count; i++) {
int[] indiv = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int average = (Arrays.stream(indiv).sum() - indiv[0]) / indiv[0];
int averOverStuNum = 0;
for (int j = 1; j < indiv.length; j++) {
if (indiv[j] > average) {
averOverStuNum++;
}
}
double ans = ((double) averOverStuNum / indiv[0]) * 100;
DecimalFormat df = new DecimalFormat("#.###");
String formattedValue = df.format(ans);
System.out.println(formattedValue + "%");
}
}
}
문제를 풀어보자면, 입력받은 횟수만큼 for 문을 돌리면서 그 다음으로 들어오는 입력 쪼개주고, 사람별 점수를 다 더한 후 사람 수로 나눠서 평균 구한 후 사람 배열만큼 for문을 돌리면서 평균보다 크다면 1씩 올려주는 식으로 평균보다 큰 사람 수를 구한 뒤
평균보다 큰 사람 수 / 전체 사람 수 * 100을 하면 백분율을 구해줄 수 있고, 이후 DecimalFormat을 사용해서 소수 세 번째 자리까지 자르고 반올림을 해줄 수 있고, 이후에는 %만 붙여 출력해주면 끝이다.
Leave a Reply