백준

백준 5800 성적 통계(Java)

Park DJ 2023. 1. 23. 22:59

https://www.acmicpc.net/problem/5800

 

5800번: 성적 통계

첫째 줄에 중덕 고등학교에 있는 반의 수 K (1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 각 반의 학생수 N (2 ≤ N ≤ 50)과 각 학생의 수학 성적이 주어진다. 시험 성적은 0보다 크거나 같고, 100보다

www.acmicpc.net


 

해석 및 팁

 


 

이 문제는 수학 시험 성적이 주어졌을 때, 최대 점수, 최소 점수, 점수 차이를 구하면 됩니다. 따라서 성적을 배열에 입력받은 후 정렬을 통해 최댓값과 최솟값을 먼저 알아냅니다. 그다음 반복문을 통해 점수차이를 구해서 예제처럼 출력하면 됩니다.

 


 

Java 코드

 


import java.util.Scanner;
import java.util.Arrays;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    
    int t = sc.nextInt();

    for(int i = 0; i < t; i++) {
      int n = sc.nextInt();
      int[] arr = new int[n];
      
      for(int j = 0; j < n; j++) {
        arr[j] = sc.nextInt();
      }
      
      Arrays.sort(arr);
      
      int max = arr[n-1];
      int min = arr[0];
      int gap = 0;

      for(int j = n-1; j > 0; j--) {
        gap = Math.max(arr[j] - arr[j-1], gap);
      }
      
      System.out.println("Class "+ (i+1));
      System.out.println("Max " + max + ", " + "Min " + min + ", " + "Largest gap " + gap);
    }
    
  }
}