Coding Test/백준 - JAVA

백준 25305번 커트라인 (JAVA)

6uiw 2025. 2. 26. 17:40







📌문제

 

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

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

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

 

🔹입력

 

 

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

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

 

🔹출력

 

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

 

🔹조건

 
  •  1 ≤ N ≤ 1000
  •  1 ≤ k ≤ N
  •  0 ≤ x ≤ 10000
 

 

🔹예제 입력 1

 
5 2
100 76 85 93 98

🔹예제 출력 1

 
98​




📌풀이 및 해설

 

🔹풀이 

 

 

내림차순으로 정렬후 k-1번째 인텍스의 데이터를 가져오는 것이 직관적으로 쉽지만, Arrays에는 오름차순 정렬만 있기 때문에

오름차순 정렬 후에 뒤에서 k번째 데이터를 가져온다.  

import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

/**
 * N명이 응시, k명이 입상
 *  -> 커트라인 점수는? (점수 = x)
 *  N=[1,1000],  k=[1,N], x=[0,10000]
 */
public class Main {
    public static void main(String[] args) throws 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());
        String[] scoreInput = br.readLine().split(" "); //두번째 줄 입력 
        int[] score = new int[N]; 
        for(int i = 0; i<N; i++) { //입력 받은 값 정수로 변환하여 score 배열에 넣기 
            score[i] = Integer.parseInt(scoreInput[i]);
        }
        Arrays.sort(score); //정렬 
        System.out.println(score[N-k]); //N개의 점수 중 k번째로 큰 값 출력

    }
}​

 

 

📌코멘트

 

 

 

 

 

 

 

 

 

 

 

 

 

끝까지 읽어주셔서 감사합니다 :)

Have a good day🐱

 

 

 

📢 Notice

1. 개발자 준비생이 공부한 내용을 정리한 글입니다. 내용에 오류가 있을 수 있습니다.

2. 위와 같은 이유로 내용에 대한 지적과 조언은 감사하게 받습니다.

3. 이 글의 내용은 계속 공부함으로써 언제든지 추가/수정 될 수 있습니다.