프로그래머스 - K번째수

윤민선·2026년 5월 17일

프로그래머스

목록 보기
8/79

문제 설명

array와 commands가 주어질 때, commands의 각 [i, j, k]마다

array의 i번째 ~ j번째 원소를 자르고
자른 배열을 정렬한 뒤
k번째 수를 구해서 반환하는 문제이다.

제한사항

array의 길이 : 1 이상 100 이하
array의 각 원소 : 1 이상 100 이하
commands의 길이 : 1 이상 50 이하
commands의 각 원소 길이 : 3

접근방법

commands를 처음부터 끝까지 반복한다.
각 [i, j, k]에서 자를 배열의 길이는 j - i + 1
array의 i-1번 인덱스부터 복사해서 temp에 담는다.
temp를 정렬하고 k-1번 인덱스 값을 꺼낸다.

문제는 1-index지만 Java는 0-index 이므로 항상 -1을 해줘야 한다.

전체코드

import java.util.Arrays;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];

        for (int i = 0; i < commands.length; i++) {
            int start = commands[i][0]; // 시작 번호
            int end   = commands[i][1]; // 끝 번호
            int k     = commands[i][2]; // 몇 번째

            // ① 구간 자르기 (길이 = end - start + 1)
            int[] temp = new int[end - start + 1];
            for (int n = 0; n < temp.length; n++) {
                temp[n] = array[n + (start - 1)]; // 1-index → 0-index
            }

            // ② 정렬
            Arrays.sort(temp);

            // ③ k번째 수 저장 (1-index → 0-index)
            answer[i] = temp[k - 1];
        }

        return answer;
    }
}

0개의 댓글