배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.
예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다.
생각한 풀이
1. 2차원 배열에서 주어진 값을 for문으로 받아온다
2. 받아온 값을 이용해 배열을 자른다
3. 자른 배열을 sort한다
4. 정렬이후 특정 위치에 있는 값을 동적할당한 리스트에 추가한다
import java.util.Arrays;
import java.util.ArrayList;
class Solution {
public int[] solution(int[] array, int[][] commands) {
ArrayList<Integer> result= new ArrayList<>();
for(int i=0;i<commands.length;i++){
int f=commands[i][0];
int e=commands[i][1];
int n=commands[i][2];
int arr[]=Arrays.copyOfRange(array,f-1,e);
Arrays.sort(arr);
result.add(arr[n-1]);
}
return result.stream().mapToInt(i->i).toArray();
}
}
🐴 풀이
1. for문 내부에서 commands 길이까지 돌며 시작,끝,특정 위치를 받아온다
2. 이후 copyOfRange로 array를 f-1부터 e까지 자른다
3. 해당 arr를 정렬하고 동적할당한 result에 특정 위치 n의 값을 추가한다
4. result를 int 타입의 배열로 변경하여 출력한다