백준 5800번 성적 통계 JAVA

YB·2025년 2월 6일

링크텍스트

설명

내림차순 정렬 한후 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;
    }
}

profile
안녕하세요

0개의 댓글