코딩테스트/백준

[백준 11004] K번째 수 (Java) - 정렬

imachill7guy 2025. 5. 11. 21:37

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에 있는 값을 출력한다.