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;
}
}