코딩테스트

[백준] 25305번 : 커트라인 자바(JAVA) 풀이

hye-ne 2024. 9. 13. 11:11

문제

 


문제 탐색하기

  • N : 학생 수 (1 ≤ N  100)
  • K : 상을 받는 사람의 수 (1 ≤ K  N)
  • 입력 : N, K 그리고 학생들의 점수 N개
  • 출력 : 상을 받는 사람 중 점수가 가장 낮은 사람의 점수

가능한 시간복잡도

입력 범위 (1 ≤ N  100)

1. 입력 받기 : 입력받은 학생 점수 정보를 배열에 저장할 때 O(N)의 시간 복잡도를 가짐

2. 정렬 : Arrays.sort() 를 사용하는 경우 O(NlogN)의 시간 복잡도를 가진다 

3. 최종적으로 최악의 경우 시간 복잡도는 O(NlogN) 

 


코드 설계하기

  • 학생 수 N과 상을 받는 사람 수 K를  입력받는다.
  • 내장 함수로 배열을 정렬해준다. (오름차순 정렬)
  • 상을 받는 사람 중 점수가 가장 낮은 사람의 점수를 출력한다.

 


풀이 코드

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 IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] arr = br.readLine().split(" ");
		int n = Integer.parseInt(arr[0]); // 학생 수 N
		int k = Integer.parseInt(arr[1]); // 상을 받는 사람 수 
		int[] intArr = new int[n]; // 학생들의 점수를 담을 배열
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		for(int i=0;i<n;i++) {
			intArr[i] = Integer.parseInt(st.nextToken());
		}
		
		// 배열 정렬 (오름차순)
		Arrays.sort(intArr);
		
		// 커트라인 출력 
		System.out.println(intArr[n-k]); 
	}
}