티스토리 뷰
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42748
언어
자바 Java
로직
주의할 점!
배열을 정렬을 한 상태에서 k번째 수를 뽑아서는 안됩니다.
범위 내의 숫자 뽑기
자바에서 제공하는 내장 메서드를 사용합니다. 자바에서 배열을 다룰 때 마지막 인덱스는 다루지 않듯이 copyOfRange 메서드도 동일합니다. 따라서 end의 경우 -1을 하지 않습니다.
// Arrays.copyOfRange(복사할 배열, 시작 인덱스, 끝 인덱스)
int start = command[0] - 1;
int end = command[1];
int pick = command[2] - 1;
int[] arr = Arrays.copyOfRange(array, start, end);
정렬
Arrays.sort(arr);
수 뽑기
순서대로 저장하면 됩니다.
answer[i++] = arr[pick];
코드
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
int i = 0;
for (int[] command : commands) {
int start = command[0] - 1;
int end = command[1];
int pick = command[2] - 1;
int[] arr = Arrays.copyOfRange(array, start, end);
Arrays.sort(arr);
answer[i++] = arr[pick];
}
return answer;
}
}