
내림차순 정렬 한후 max값, min값, 가장큰 gap차이만 구해주면 된다.
시간복잡도:O(K*NLogN), 공간복잡도:O(N)
import java.util.*;
import java.io.*;
class Main {
public static void main (String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int k = Integer.parseInt(br.readLine());
for(int i=0;i<k;i++){
st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
Integer [] arr = new Integer[n];
for(int j=0;j<n;j++){
arr[j]= Integer.parseInt(st.nextToken());
}
Arrays.sort(arr,Collections.reverseOrder());
sb.append("Class ").append(i+1).append("\n");
sb.append("Max ").append(arr[0]).append(", Min ").append(arr[n-1]).append(", Largest gap ").append(gap(arr,n)).append("\n");
}
System.out.print(sb);
}
public static int gap(Integer[] arr,int n){
int gap = 0;
for(int i=0;i<n-1;i++){
gap = Math.max(gap,arr[i]-arr[i+1]);
}
return gap;
}
}
