- int배열을 Integer 배열로 바꾼다.(asList를 사용하기 위해)
- Integer 배열을 asList를 변환 후 subList를 사용하여 List 분해
- 분해된 List를 정렬 후 k번 수 answer에 담기
import java.util.*;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
Integer[] arr = new Integer[array.length];
int index = 0;
for(int i : array){
arr[index++] = i;
}
int idx = 0;
for(int[] command : commands) {
List<Integer> list = new ArrayList<>(Arrays.asList(arr).subList(command[0] - 1, command[1]));
Collections.sort(list);
answer[idx++] = list.get(command[2]-1);
}
return answer;
}
}
subList 는 List 는 자신이 생성된 parent 값을 가지고 있어 subList를 변경하여 parent에도 영향이 갑니다.
List<Integer> list = Arrays.asList(arr).subList(command[0] - 1, command[1]); Collections.sort(list); ...
subList로 만들어진 list가 sort를 할 경우 부모 List인 arr List에도 영향을 미쳐 바뀝니다.
- arr = {5,2,4,1,2};
list = Arrays.asList(arr).subList(1,4);
list = {2,4,1};
list를 sort를 하게 되면 {1,2,4} 로 바뀌면,
동시에 부모 List인 arr은 {5,1,2,4,2}로 바뀝니다.