더 좋은 문제 풀이가 있거나 궁금하신 점이 있다면 편하게 댓글 남겨주세요!
이번 문제는 "실제 정답과 출력값의 절대오차 또는 상대오차가 10-2 이하이면 정답이다." 라는 조건이 있었습니다. 그렇다는 것은 0.01 까지의 오차만 허용한다는 것이고 오차를 줄이기 위해 double 자료형을 사용해야 합니다. (만약 더 정밀한 값을 사용해야 할 경우 long 자료형을 사용하는 좋겠습니다.)
double 형으로 기말고사 점수를 입력받겠습니다.
double score[] = new double[N];
for(int i = 0 ; i < N; i++){
score[i] = sc.nextDouble();
}
다음으로는 기말고사 점수 중 최댓값을 알기위해 Arrays.sort()를 해보겠습니다.
Arrays.sort(score);
마지막으로 새로운 평균값을 구해보겠습니다.
for(int j = 0; j< score.length; j++){
score[j] = (score[j] / M ) * 100;
avg += score[j];
}
avg = avg / N;
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
double avg = 0;
double score[] = new double[N];
for(int i = 0 ; i < N; i++){
score[i] = sc.nextDouble();
}
Arrays.sort(score);
double M = score[N-1];
for(int j = 0; j< score.length; j++){
score[j] = (score[j] / M ) * 100;
avg += score[j];
}
avg = avg / N;
System.out.println(avg);
}
}