2022 연세대학교 미래캠퍼스 슬기로운 코딩생활에 명의 학생들이 응시했다.
이들 중 점수가 가장 높은 명은 상을 받을 것이다. 이 때, 상을 받는 커트라인이 몇 점인지 구하라.
커트라인이란 상을 받는 사람들 중 점수가 가장 가장 낮은 사람의 점수를 말한다.
첫째 줄에는 응시자의 수 과 상을 받는 사람의 수 가 공백을 사이에 두고 주어진다.
둘째 줄에는 각 학생의 점수 가 공백을 사이에 두고 주어진다.
상을 받는 커트라인을 출력하라.
✅ 입력받은 점수를
score[]
에 저장하여Arrays.sort(score)
메서드를 통해 정렬한 후, k번째로 큰 수를 출력한다. 이 때,Arrays.sort()
메서드는 오름차순으로 정렬하므로scroe[k-1]
를 출력하면 k번째로 작은 수가 출력되므로, k번째로 큰 수인score[n-k]
를 출력해야 한다.
import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int[] score = new int[n];
st = new StringTokenizer(br.readLine());
for(int i=0;i<n;i++) {
score[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(score);
bw.write(score[n-k] + "");
br.close();
bw.close();
}
}
➕
Collections.reverseOrder()
: 내림차순 정렬 수행 ➡️int[]
대신Integer[]
을 사용해야 한다!
import java.io.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
Integer[] score = new Integer[n]; // Integer[]
st = new StringTokenizer(br.readLine());
for(int i=0;i<n;i++) {
score[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(score, Collections.reverseOrder()); // 내림차순
bw.write(score[k-1] + "");
br.close();
bw.close();
}
}