내 코드
import java.util.Arrays;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double[] arr = new double[sc.nextInt()];
for(int i = 0; i<arr.length; i++) {
arr[i] = sc.nextDouble();
}
sc.close();
double sum = 0;
Arrays.sort(arr);
for(int i = 0; i<arr.length; i++ ) {
sum += ( (arr[i] / arr[arr.length-1]) * 100);
}
System.out.println(sum / arr.length);
}
}
우선 임의의 과목 개수 N을 받아야 하기 때문에 배열의 길이를 입력 받은 값만큼 생성한 후 배열의 길이 만큼 for문을 반복해서 배열의 각 원소에 값들을 입력받도록 한다.
Arrays.sort()를 사용하면 오름차순으로 정렬하여 최댓값은 배열의 마지막 원소에 있게 된다. 두 번째 for문에서는 각 과목에 대해 새로운 평균 계산식 (점수 / M[최댓값] * 100)을 sum에 저장하고 그것을 배열의 길이(과목의 수)만큼 나누어 평균의 결과를 출력했다.
생각해야할 점
- 정답에 대한 절대, 상대오차는 10^(-2)까지 허용한다는 점
- 과목에 대한 입력 값은 공백을 기준으로 주어진다.
- 출력 값은 오차범위가 있으므로 연산에서 자료형을 double 타입으로 형변환 해주어야 한다.
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 4344번/1차원 배열] 평균은 넘겠지 - Java (0) | 2021.03.15 |
---|---|
[백준 8958번/1차원 배열] OX퀴즈 - Java (0) | 2021.03.15 |
[백준 3052번/1차원 배열] 나머지 - Java (0) | 2021.03.15 |
[백준 2577번/1차원 배열] 숫자의 개수 - Java (0) | 2021.03.15 |
[백준 2562번/1차원 배열] 최댓값 - Java (0) | 2021.03.15 |