https://www.acmicpc.net/problem/11004
K번째 수
문제
수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 5,000,000)과 K (1 ≤ K ≤ N)이 주어진다.
둘째에는 A1, A2, ..., AN이 주어진다. (-109 ≤ Ai ≤ 109)
출력
A를 정렬했을 때, 앞에서부터 K번째 있는 수를 출력한다.
예제 입력 1 복사
5 2
4 1 2 3 5
예제 출력 1 복사
2
풀이
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));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken()); // N개 수
int K = Integer.parseInt(st.nextToken()); // K번째 수
int[] numbers = new int[N];
// 숫자 입력받기
st = new StringTokenizer(br.readLine());
for (int i=0; i<N; i++){
numbers[i] = Integer.parseInt(st.nextToken());
}
// 오름차순 정렬
Arrays.sort(numbers);
System.out.println(numbers[K-1]);
}
}
- 정렬을 활용한 문제
- 오름차순 정렬 후 K번째에 위치하는 숫자를 출력하면 된다.
- N크기의 배열을 선언 후에 숫자를 입력받고 Arrays.sort() 메소드를 활용하여 오름차순 정렬을 한다.
- K번째 수를 출력하기 위해 index K-1에 있는 값을 출력한다.
'코딩테스트 > 백준' 카테고리의 다른 글
[백준 1978] 알파벳 (Java) - DFS, 백트래킹 (0) | 2025.05.13 |
---|---|
[백준 1697] 숨바꼭질 (Java) - BFS (0) | 2025.05.12 |
[백준 10815] 숫자 카드 (Java) - 정렬, 해시 (0) | 2025.05.10 |
[백준 1931] 회의실 배정 (Java) - 정렬, 그리디 (0) | 2025.05.09 |
[백준 1764] 듣보잡 (Java) - 정렬 (0) | 2025.05.08 |