코딩테스트 연습 > 정렬 > K번째수
https://school.programmers.co.kr/learn/courses/30/lessons/42748
숫자가 원소로 들어있는 array 배열과 return 값에 대한 명령 commands 배열이 주어진다.
commands에 맞춰 array에서 배열을 추출한 후, 정렬하고 commands에 맞게 결과값을 return 할 배열에 삽입하라.

for-each 문을 이용하여 commands 배열의 명령을 추출한 뒤, 그에 맞춰 임시 배열인 temp에 복사하고, 정렬한다.
이후 answer에 삽입한다.
import java.util.*;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
int l = 0;
int i,j,k;
for(int a[] : commands){
i = a[0]-1;
j = a[1];
k = a[2]-1;
int temp[] = Arrays.copyOfRange(array,i,j);
Arrays.sort(temp);
answer[l++] = temp[k];
}
return answer;
}
}
이 문제 같은 경우 정렬은 라이브러리에서 가져오므로 사실상 2차원 배열에 관한 문제이다. 이 문제를 풀면서 java의 Arrays.sort() 기능, Arrays.copyOfRange() 기능에 대해서 구체적으로 알게 되었다.
% Arrays.copyOfRange를 사용할 때 (array, i, j) 에서 array는 복사할 배열, i는 시작 인덱스, j는 끝 인덱스인줄 알았으나, 끝 인덱스가 아닌 python의 range 처럼 해당 요소 직전까지 자르는 것이었다.
