https://www.acmicpc.net/problem/25305
문제
2022 연세대학교 미래캠퍼스 슬기로운 코딩생활에
명의 학생들이 응시했다.
이들 중 점수가 가장 높은
명은 상을 받을 것이다. 이 때, 상을 받는 커트라인이 몇 점인지 구하라.
커트라인이란 상을 받는 사람들 중 점수가 가장 가장 낮은 사람의 점수를 말한다.
풀이 방법
어렵지 않았던 문제다. N명 분의 점수를 버블 정렬을 사용하여 오름차순으로 정렬한 뒤
마지막 인덱스에서 k를 빼주었다.
import java.io.*;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(bf.readLine() , " ");
int N = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int[] array = new int[N];
st = new StringTokenizer(bf.readLine() , " ");
for( int i = 0; i < N; i++)
{
array[i] = Integer.parseInt(st.nextToken());
}
for( int i = 0 ; i < array.length; i++)
{
for(int j = 0; j < array.length-1; j++)
{
if(array[j] > array[j+1])
{
int tmp = array[j+1];
array[j+1] = array[j];
array[j] = tmp;
}
}
}
// 배열 길이에서 k를 빼준다
System.out.println(array[array.length-k]);
}
}
느낀점
매우 중요하다고 알려진 정렬 알고리즘 카테고리에 진입했다.
버블 정렬만을 알고 있는 나는 1번부터 3번까지는 무리없이 풀었지만, 4번부터는 다른 정렬 방법을 알지 못한다면 풀 수 없는 문제들이다.
그리하여 나는 이번 카테고리에서 여러 개의 정렬 방법을 공부해가며 카테고리를 완료할 생각이다.