[백준] 25305. 커트라인

진예·2023년 10월 12일
0

Baekjoon : JAVA

목록 보기
27/76
post-thumbnail

📌 문제

[25305] 커트라인

2022 연세대학교 미래캠퍼스 슬기로운 코딩생활에 NN의 학생들이 응시했다.

이들 중 점수가 가장 높은 kk명은 상을 받을 것이다. 이 때, 상을 받는 커트라인이 몇 점인지 구하라.

커트라인이란 상을 받는 사람들 중 점수가 가장 가장 낮은 사람의 점수를 말한다.

⬇️ 입력

첫째 줄에는 응시자의 수 NN상을 받는 사람의 수 kk가 공백을 사이에 두고 주어진다.

둘째 줄에는 각 학생의 점수 xx가 공백을 사이에 두고 주어진다.

⬆️ 출력

상을 받는 커트라인을 출력하라.

✔️ 제한

  • 1N10001 ≤ N ≤ 1\,000
  • 1kN1 ≤ k ≤ N
  • 0x100000 ≤ x ≤ 10\,000

💡 코드

✅ 입력받은 점수를 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();
	}
}

profile
백엔드 개발자👩🏻‍💻가 되고 싶다

0개의 댓글