import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] M = new int[N];
float[] result = new float[N];
int max = 0;
for(int i=0; i<N; i++) {
M[i] = sc.nextInt();
if(M[i] > max) {
max = M[i];
}
}
float sum = 0;
for(int i=0; i<N; i++) {
result[i] = ((M[i]/(float)max)*100);
sum += result[i];
}
float avg = (float)sum/N;
System.out.println(avg);
}
}
설명
위 문제는 먼저 사용자에게 과목의 개수 N을 입력받는다. 이후 N개의 과목 점수를 입력받아야 하므로 과목의 점수를 받을 배열 M을 선언해주고, 배열의 길이는 과목의 개수인 N으로 지정해준다. 그다음 새로운 점수를 넣을 float 형태의 배열을 만들어주고 마찬가지로 길이는 N으로 지정해준다.
이제 사용자에게 점수를 입력받기 위해 반복문을 통해 입력을 받고, 최고점을 기록하기 위해 반복문 전에 max라는 int형 변수를 만들어주고, if문을 통해 입력받은 점수가 max보다 크다면 max값을 입력값으로 바꾸어주는 작업을 진행한다.
이제 점수를 입력받고, 최고점을 알아내는 작업이 끝난 것이다.
출력값으로 새로운 점수에 대한 평균값을 구해야 하므로 먼저 float형태의 총점을 넣기 위해 sum이라는 변수를 만들어주고, 반복문을 통해 새로운 점수를 구하는 작업을 해준다. 새로운 점수를 구하는 식은 문제에서처럼 받은 점수/최고점*100이다.
그러므로, 반복문을 만들어주고 아까 만들어두었던 새로운 점수를 넣을 result라는 배열에 해당하는 식을 작성해준다.
위에서 max를 float형이 아닌 int형으로 선언해두었기 때문에 올바른 결과값을 얻기 위해서 (float)을 붙여 형변환을 해준다.
마지막으로 새로운 점수를 모두 합한 sum을 과목의 수만큼 나누어주면 출력하려는 결과값을 얻을 수 있다.
위 문제에서 주의할 점은 형 변환이기 때문에 잊지말고 형변환 코드를 작성해주도록 하자.