코딩테스트

[백준] 1546번 : 평균 (JAVA)

멭아몽 2023. 6. 13. 15:47

1. 문제 분석

이 문제는 알고리즘 개념이 필요없는 간단한 수학 연산 문제이다. 최고점을 만점으로 잡고 산출한 점수의 평균을 구하면 된다

 

시간복잡도 : O(N)

알고리즘 : 평균 값 구하기

 

2. 문제 풀이

점수 A, B, C, .. etc를 다시 평균 내면 {A/M*100 + B/M*100 + ...} / 과목 수 이므로 정리하면 (A+B+C)*100 / M * (과목수)이다.

1. 정수배열을 입력 받는다.

2. 최고점수를 찾는다.

3. 공식에 대입한다.

 

즉, 최고점만 찾는다면 해결되는 문제이다. N의 크기가 작아 시간 제한에 크게 영향을 받지 않는다. (최대 O(n^3))

 

3. 코드 구현

import java.util.Scanner;

class Main
{
 public static void main(String args[])
 {
    Scanner scanner = new Scanner(System.in);
    int N = scanner.nextInt();
    int max = 0;
    int sum = 0;
    int temp = 0;

    for(int i = 0; i < N; i++){
      temp = scanner.nextInt();
      if(temp > max){
        max = temp;
      }
      sum += temp;
    }
    System.out.println(sum*100.0/N/max);
 }
}