© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 1546 - 평균

2023-08-04
BOJ
브론즈 I
java
원본 문제 보기
수학
사칙연산

문제

BOJ 1546 - 평균

N개의 시험 점수가 주어질 때, 최댓값 M에 대해 각 점수를 (점수/M)*100으로 변환한 뒤 새로운 평균을 구하라.

입력

첫째 줄에 N, 둘째 줄에 N개의 점수가 주어진다.

출력

새로운 평균을 출력한다.

예제

입력출력
3 40 80 6075.0

풀이

최댓값을 구한 후 각 점수를 변환하여 평균을 계산한다.

  1. 점수를 정렬하여 최댓값을 구한다
  2. 각 점수를 (점수/최댓값)*100으로 변환하여 합산한다
  3. 합을 N으로 나누어 평균을 출력한다

핵심 아이디어: 변환된 평균 = (원래 합 / 최댓값) * 100 / N이다.

코드

package day549;
 
import java.io.*;
import java.util.*;
 
public class Day544BOJ1546평균 {
  public static void main(String[] args) throws Exception {
 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
    double arr[] = new double[Integer.parseInt(br.readLine())];
 
    StringTokenizer st = new StringTokenizer(br.readLine(), " ");
 
    for (int i = 0; i < arr.length; i++) {
      arr[i] = Double.parseDouble(st.nextToken());
    }
 
    double sum = 0;
    Arrays.sort(arr);
 
    for (int i = 0; i < arr.length; i++) {
      sum += ((arr[i] / arr[arr.length - 1]) * 100);
    }
    System.out.print(sum / arr.length);
  }
}

복잡도

  • 시간: O(N log N)
  • 공간: O(N)