Java 코딩테스트 공부/Java 코테 나만의 팁

[정렬] 내림차순 Arrays.sort(arr, Collections.reverseOrder());

daramG 2022. 10. 20. 14:50

그런데 int[] arr = new int[n]; 에서 이렇게 작성하면 오류 발생한다.

왜나하면

public static <T> void sort(T[] a,  Comparator <? super T> c)

Arrays.sort는 이 형식을 사용하는데,

T는 제네릭 클래스로 모든 객체를 허용하지만, int는 기본형 타입으로 Collections에서 사용하는 객체가 아니기 때문이다.

(primitive type과 reference type 차이)

 

따라서 Integer arr[] = new Integer[n]; 으로 Integer 타입으로 배열을 선언해주어야 한다.

 

 

문제 )

 

소스코드 )

import java.util.*;
class Main {
	public Integer solution(int n, int k, Integer[] arr) {
		int answer;
		Arrays.sort(arr, Collections.reverseOrder());
		answer = arr[k-1];
		return answer;
    }

	public static void main(String[] args) {
		Main T = new Main();
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int k = sc.nextInt();
		Integer[] arr = new Integer[n];
		for(int i=0; i<n; i++) {
			arr[i] = sc.nextInt();
		}
		System.out.println(T.solution(n, k, arr));
	}
}