자바알고리즘 - 배열 - 백준 1546 평균

 

문제

세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.

예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.

세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.

 

생각

1. 소수점이 있기 때문에 double형으로 처리하고 기존 점수를 배열에 넣고 Arrays.sort를 이용해 최댓값을 구한다.

2. 해당 최댓값을 이용해 (점수/최댓값) * 100 을 해준다.

 

 

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(bf.readLine());
        StringTokenizer st = new StringTokenizer(bf.readLine());
        double[] arr = new double[N];
        for(int i=0 ; i<N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
        Arrays.sort(arr);
        double Max = arr[N-1];
        double sum =0;
        for(int j=0 ; j<N;j++) {
            double num = (arr[j] / Max) * 100;
            sum += num;
        }
        System.out.println(sum/N);
    }
}

+ Recent posts