배열에서 max를 구하는 방법을 여러가지로 해보았다. 물론, 배열을 사용하지 않고도 풀어 보았다.
모두 Scanner가 아닌 BufferedReader를 사용했다.
그런데, 다 풀고 보니 1번과 4번 방법은 굳이 배열을 안 써도 됐네 ^-^
arr[i] = a; 한 줄만 지우면 되겠다. 성능 비교하려고 해봤다고 생각하자 ㅎ
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
double[] arr = new double[N];
double max = Double.MIN_VALUE;
double sum = 0;
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++){
double a = Double.parseDouble(st.nextToken());
arr[i] = a;
max = Math.max(max, a);
sum += a;
}
System.out.print(sum / (double)N / max*100);
}
}

import java.io.*;
import java.util.StringTokenizer;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
double[] arr = new double[N];
double sum = 0;
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++){
double a = Double.parseDouble(st.nextToken());
arr[i] = a;
sum += a;
}
double max = Arrays.stream(arr).max().getAsDouble();
System.out.print(sum / (double)N / max*100);
}
}

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

import java.io.*;
import java.util.StringTokenizer;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
double[] arr = new double[N];
double max = Double.MIN_VALUE;
double sum = 0;
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++){
double a = Double.parseDouble(st.nextToken());
arr[i] = a;
sum += a;
max = max > a ? max : a;
}
System.out.print(sum / (double)N / max*100);
}
}

성능 차이는 별로 없고, Math 함수 쓰는 게 가장 좋구만
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
double max = Double.MIN_VALUE;
double sum = 0;
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++){
double a = Double.parseDouble(st.nextToken());
if(a > max)
max = a;
sum += a;
}
System.out.print(sum / (double)N / max*100);
}
}

역시 배열 안 쓰는 게 젤 쉽다 ㅎ