N명의 학생이 응시한 시험에서 가장 점수가 높은 K 명이 상을 받을 수 있고, 상을 받는 커트라인이 몇 점인지 구하는 문제
import java.util.Arrays;
import java.util.Scanner;
import java.util.Collections;
public class CutLine {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
Integer[] arr = new Integer[N]; // Integer 배열로 선언
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
Arrays.sort(arr, Collections.reverseOrder()); // 내림차순으로 정렬
System.out.println(arr[K-1]);
}
}
arr을 Integer 형태로 선언하는 이유는 배열의 요소를 내림차순으로 정렬할 때, 기본 데이터 타입인 'int'를 사용하면 안되기 때문.
내림차순 정렬을 위해 Collections.reverseOrder()를 사용할 때: Collections.reverseOrder()는 내림차순으로 정렬하기 위한 Comparator를 반환합니다. 이 Comparator는 Comparable 인터페이스를 구현한 객체를 기준으로 내림차순으로 정렬하기때문. int는 기본 데이터 타입으로 Comparable 인터페이스를 구현하지 않으므로 Collections.reverseOrder()를 사용하려면 Integer 객체 배열을 사용해야 함.