Problem Solving/BOJ
[백준 1546번/1차원 배열] 평균 - Java
Ethan(기린)
2021. 3. 15. 15:45
1546번: 평균
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보
www.acmicpc.net
내 코드
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 타입으로 형변환 해주어야 한다.