프로그래머스 - k번째수

윤민선·2026년 8월 28일

프로그래머스

목록 보기
73/77
post-thumbnail

문제 설명

배열 arraycommands가 주어진다.

commands의 각 원소는 [i, j, k] 형태로 주어진다.

[i, j, k]에 대해 다음 과정을 수행한다.

  1. arrayi번째 숫자부터 j번째 숫자까지 자른다.
  2. 자른 배열을 오름차순으로 정렬한다.
  3. 정렬된 배열에서 k번째 숫자를 찾는다.
  4. 찾은 숫자를 순서대로 배열에 담아 반환한다.

접근 방법

시작 위치인 ii - 1로 변경해야 한다.

Arrays.copyOfRange()를 사용하여 배열을 원하는 범위만큼 잘라낸다.

Arrays.copyOfRange(array, commands[i][0] - 1, commands[i][1]);

Arrays.sort()를 사용하여 잘라낸 배열을 오름차순으로 정렬한다.

Arrays.sort(temp);

정렬된 배열에서 k번째 값을 가져올 때도 배열의 인덱스는 0부터 시작하므로 k - 1을 사용한다.

temp[commands[i][2] - 1]

풀이 순서

  1. commands.length만큼 answer 배열을 생성한다.
  2. commands를 하나씩 확인한다.
  3. commands[i][0]에서 commands[i][1]까지 배열을 자른다.
  4. Arrays.copyOfRange()를 사용하여 필요한 부분만 추출한다.
  5. 추출한 배열을 Arrays.sort()를 이용하여 오름차순으로 정렬한다.
  6. 정렬된 배열에서 k번째 값을 가져온다.
  7. 가져온 값을 answer에 저장한다.
  8. 모든 명령을 처리한 후 answer를 반환한다.

최종 코드

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[] temp = Arrays.copyOfRange(
                array,
                commands[i][0] - 1,
                commands[i][1]
            );
         
            Arrays.sort(temp);
            
            answer[i] = temp[commands[i][2] - 1];
        }

        return answer;
    }
}

실행결과


0개의 댓글