풀이
n이 5,000,000이고 시간 제한이 2초다. 즉, O(nlogn)인 정렬을 사용해야 한다. 가장 간단하게 정렬할 수 있는 Arrays.sort()(퀵 소트)를 사용하여 풀었다. (사실 귀찮아서…)
이 문제도 Scanner를 쓰면 시간 초과가 뜬다!!!!BufferedReader를 사용하도록 하자!
소스 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.*;
import java.io.*;
public class k번째수 {
public static void main(String[] args) throws Exception{
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());
int[] arr = new int[n];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
System.out.println(arr[k-1]);
}
}
태클 감사합니다.
조언 환영입니다.