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

guswls·2024년 5월 11일
0

알고리즘

목록 보기
29/39
post-custom-banner

문제


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



코드


import java.util.*;
import java.io.*;

class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int K = Integer.parseInt(br.readLine());

		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < K; i++) {
			StringTokenizer 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());

			int max = arr[0];
			int min = arr[N - 1];
			int gap = 0;
			for (int k = 1; k < N; k++) {
				int diff = Math.abs(arr[k] - arr[k - 1]);
				gap = Math.max(gap, diff);
			}

			sb.append("Class ").append(i + 1).append(System.lineSeparator());
			sb.append(String.format("Max %d, Min %d, Largest gap %d\n", max, min, gap));
		}

		System.out.println(sb);
	}
}


문제 이해


  • 딱히 문제에 대한 특별한 이해가 필요없다. 문제에서 정의된 대로 구현하자.


풀이 방법


  • 입력 배열을 내림차순으로 정렬한 다음에 각 문제에서 요구하는 값들을 구해나간다.
  • StringBuilder에 담은 뒤 한꺼번에 출력한다.


핵심 포인트


  • String.format을 사용하면 printf와 같은 포맷팅을 수행할 수 있다.


보완할 점 / 느낀 점


  • 단순 계산 문제이다. 실전 코테에서 마주칠 유형은 아니다.


참고자료


profile
안녕하세요
post-custom-banner

0개의 댓글