✏️ 문제풀이/백준

[백준/Java] 25305번 :: 커트라인

bono-hye 2024. 5. 21. 12:00

| 문제

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

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

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

 

| 입력

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

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

 

| 출력

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

 

| 제한

  •  1≤𝑁≤1000
  •  1≤𝑘≤𝑁
  •  0≤𝑥≤10000

| 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main
{
	public static void main(String[] args) throws NumberFormatException, IOException 
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int N = Integer.parseInt(st.nextToken());
		int k = Integer.parseInt(st.nextToken());
		
		st = new StringTokenizer(br.readLine());
		
		int[] arr = new int[N];
		for(int i=0; i<arr.length; i++)
		{
			arr[i] = Integer.parseInt(st.nextToken());
		}		
		
		Arrays.sort(arr);
		
		System.out.println(arr[N-k]);
	}
}

 

| 정리

커트라인 구하는 것은 정렬 한 후,

정렬은 오름차순으로 되니까 전체 인원 수에서 k(커트라인 인원)을 빼면 커트라인의 점수가 담겨 있는 위치를 구할 수 있다고 생각해서 그렇게 풀었음!!