📌문제
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🐱
1. 개발자 준비생이 공부한 내용을 정리한 글입니다. 내용에 오류가 있을 수 있습니다.
2. 위와 같은 이유로 내용에 대한 지적과 조언은 감사하게 받습니다.
3. 이 글의 내용은 계속 공부함으로써 언제든지 추가/수정 될 수 있습니다.
'Coding Test > 백준 - JAVA' 카테고리의 다른 글
백준 2750번 수 정렬하기(JAVA) (2) | 2025.02.18 |
---|---|
백준 2839번 설탕 배달 (JAVA) (1) | 2025.02.06 |
백준 19532번 수학은 비대면강의입니다. (JAVA) (1) | 2025.02.03 |
백준 2231번 분해합 (JAVA) (2) | 2025.01.23 |
백준 24266번 알고리즘 수업 - 알고리즘의 수행 시간 5 (JAVA) (0) | 2025.01.10 |