본문 바로가기
Baekjoon

[백준] 5800번 - 성적 통계 - Java

by jinjin98 2022. 12. 11.

 

각 반의 학생들의 성적을 리스트에 넣고 내림차순으로 정렬해줍니다.

그리고 첫 번째 값부터 시작해 자신의 뒤에 있는 값과 점수 차이를 구해 가장 큰 점수 차이를 갱신시켜줍니다.

각 반의 최고 점수, 최소 점수, 가장 큰 점수 차이를 StringBuffer 에 추가하고

마지막에 한꺼번에 출력합니다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;

public class p5800 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer();
        ArrayList<Integer> ar;

        int K = Integer.parseInt(br.readLine());

        StringTokenizer st;
        int N;
        for(int i=0; i<K; i++) {

            st = new StringTokenizer(br.readLine());

            N = Integer.parseInt(st.nextToken());

            ar = new ArrayList<>();
            for(int j=0; j<N; j++) {
                ar.add(Integer.parseInt(st.nextToken()));
            }

            Collections.sort(ar, Comparator.reverseOrder());

            int differ = Integer.MIN_VALUE;
            for(int k=0; k<ar.size()-1; k++) {
                differ = Math.max(differ, ar.get(k) - ar.get(k+1));
            }
            sb.append("Class " + (i+1) +  "\n").append("Max " + ar.get(0))
                    .append(", Min " + ar.get(ar.size()-1)).append(", Largest gap " + differ + '\n');
        }

        System.out.println(sb);
    }
}

댓글