[자료구조] 평균 구하기 / 백준 1546

2024. 6. 16. 15:01- 알고리즘/개인공부

문제

https://www.acmicpc.net/problem/1546

 

 

 

풀이

최고점 M 으로 나눈후 100을 곱한값의 평균값을 구하는 방식으로 다음과 같이 나타낼수 있습니다.

 

- 변환 점수의 평균을 구하는 식 (점수가 a,b,c인 경우)

(a / M * 100 + b / M * 100 + c / M * 100) / 3

 

위의 식은 다시 아래와 같이 최소화 할수 있습니다.

( a + b + c ) * 100 / M / 3 

 

그냥 연산을 편리하게 하기 위해 최소화 한거지만 처음 식대로 알고리즘을 짜도 문제는 없습니다.

 

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Scanner;

class Main {      // 백준 제출할때는 class Main으로 변경하여 제출 해야함

    public static void main(String[] args) {

        try {

            // Scanner 사용
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();   // 과목수

            int A[] = new int[N];   // 과목수길이 배열 생성

            for (int i = 0; i < N; i++) {
                A[i] = sc.nextInt();
            }

            long sum = 0;
            long M = 0;

            for (int i = 0; i < N; i++) {
                if (A[i]>M) M = A[i];	// 배열중 가장 
                sum += A[i];
            }

            System.out.println(sum*100.0/M/N);

        } catch (Exception e) {
            e.printStackTrace();
        }


    }

}