티스토리 뷰
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42748
언어
자바 Java
로직
어려운 문제가 아니기 때문에 배열을 자르는 방법만 소개하겠습니다.
배열 자르기
주어진 int형 배열을 원하는 개수만큼 자르기 위해서는 내장 메서드를 사용하면 됩니다. Arrays 클래스의 copyOfRange 메서드를 사용하면 쉽게 원하는 개수만큼 자를 수 있습니다.
arr 배열의 요소 중에서 2, 3, 4를 꺼내봅시다. 요소 2의 인덱스는 1이고 요소 4의 인덱스는 3입니다. Arrays.copyOfRange()는 다음과 같이 정의되어 있습니다.
Arrays.copyOfRange(배열, 시작 인덱스, 마지막 인덱스 + 1)
주의해야 할 점은 요소 4의 인덱스가 3이지만 + 1을 하여 넘겨주어야 합니다.
public class Main {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
int i = 1;
int j = 3;
int[] slice = Arrays.copyOfRange(arr, i, j + 1);
System.out.println(Arrays.toString(slice));
}
}
출력
[2, 3, 4]
코드
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
public int[] solution(int[] array, int[][] commands) {
List<Integer> result = new ArrayList<>();
for (int[] command : commands) {
int i = command[0];
int j = command[1];
int k = command[2];
int[] sliceArr = Arrays.copyOfRange(array, i - 1, j);
Arrays.sort(sliceArr);
result.add(sliceArr[k - 1]);
}
return result.stream().mapToInt(Integer::valueOf).toArray();
}
}