https://school.programmers.co.kr/learn/courses/30/lessons/42748
문제
i와 j사이에서 K번째 수를 구해라.
풀이
너무 간단해서 적지는 않겠다. 하지만 다른 사람의 풀이를 보니 Arrays.copyOfRange(arr, i, j)라는 획기적인 함수가 있단 것을 깨달았다.
코드 (원래)
import java.util.*;
class Solution {
public ArrayList<Integer> solution(int[] arr, int[][] cmd) {
ArrayList<Integer> list = new ArrayList<>();
for(int i=0; i<cmd.length; i++){
int start = cmd[i][0]-1;
int end = cmd[i][1];
int cur = cmd[i][2]-1;
int[] newArr = new int[end-start];
int idx = 0;
for(int j=start; j<end; j++){
newArr[idx++] = arr[j];
}
Arrays.sort(newArr);
list.add(newArr[cur]);
}
return list;
}
}
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;
}
}