728x90
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
public class boj_25305_커트라인 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n, k;
// 커트라인이란 상을 받는 사람들 중 점수가 가장 가장 낮은 사람의 점수를 말한다.
String temp[] = br.readLine().split(" ");
n = Integer.parseInt(temp[0]);
k = Integer.parseInt(temp[1]);
temp = br.readLine().split(" ");
Integer scores[] = new Integer[temp.length];
for (int i = 0; i < temp.length; i++) {
scores[i] = Integer.parseInt(temp[i]);
}
Arrays.sort(scores, Collections.reverseOrder());
System.out.println(scores[k-1]);
}
}
내림차순 정렬하려고 Arrays.sort(~, Collections.reverseOrder()); 호출 시 오류가 떴는데 알고 보니 primitive 1차원 배열로는 호출 불가능한 함수였다.
sort 함수 오름차순, 내림차순 호출 시 각각 description을 확인 해 보니 오름차순의 경우 Object[]가 파라미터로 전달되고, 내림차순의 경우 제네릭, 두 번째 인자로 Comparator를 파라미터로 전달해줘야 했기 떄문에 에러가 발생했던 것이다. 아마 추측 컨대 Comparator의 경우 제네릭 타입을 처리하는데 primitive 타입은 처리할 수 없기 떄문에 그런게 아닐까 싶다. 고로 굳이 내림차순으로 정렬을 하기 위해 꼭 Collections.reverseOrder()을 호출할 필요 없이 forloop로 뒤에서부터 읽는게 더 낫지 않을까 싶다.
예전에는 error trace가 떴을 때 바로 구글링을 해서 문제를 해결했지만 이제는 코드 내부까지 뜯어보려고하는 태도가 생겨 한층 더 발전한 느낌이었다.
728x90
'알고리즘공부(Algorithm Study) > 문제풀이(ProblemSolving)' 카테고리의 다른 글
백준 24060 알고리즘 수업 - 병합 정렬 1 (0) | 2022.11.28 |
---|---|
백준 25501 재귀의 귀재(재귀) (0) | 2022.11.26 |
백준 2587 java - 대표값2(수학, 구현, 사칙연산) (0) | 2022.11.24 |
백준 2566 java - 최댓값(구현) (0) | 2022.11.22 |
백준 1916 java - 최소비용 구하기(다익스트라 알고리즘) (0) | 2022.07.15 |
댓글