import java.util.*;
public class Main {
public static void main(String[] args){
//N을 입력받기, 길이가 N인 배열 선언
//N만큼 반복하며 점수 입력받기, max 구하기
//현재 점수/max*100 구하고 배열에 입력, sum 구하기
//새로운 점수 평균 구하기
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
float[] arr = new float[N];
float max = -1;
float sum = 0;
for(int i=0; i<N; i++) {
arr[i] = sc.nextInt();
if(max<arr[i])
max = arr[i];
}
for(int i=0; i<N; i++) {
arr[i] = (arr[i]/max)*100;
sum += arr[i];
}
System.out.print(sum/N);
}
}
Note
arr[], max, sum을 int형으로 선언하면 값이 틀리게 계산된다.
정수형 변수 간의 나눗셈을 하면 소수점 이하를 버린 몫을 반환한다.
만약 피연산자를 모두 정수형으로 선언하고 (40/80 * 100)을 연산하면 결과는 0이 된다.
문제 출제 의도는 실수형(float)으로 선언한 변수간 나눗셈을 하고, 나머지(소수점 2자리)를 얻는 것이다.