[백준/JAVA] 1차원 배열 - 1546번 평균

신승현·2022년 8월 8일
0
post-thumbnail

더 좋은 문제 풀이가 있거나 궁금하신 점이 있다면 편하게 댓글 남겨주세요!


📝 문제


1546번 평균


🤷‍♂️ 접근 방법


이번 문제는 "실제 정답과 출력값의 절대오차 또는 상대오차가 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);

    }
}


profile
I have not failed. I've just found 10,000 ways that won't work. - Thomas A. Edison

0개의 댓글