package Programmers;
import java.util.*;
public class ProgrammingBasic {
public static void main(String[] args) {
int[] array = {1, 5, 2, 6, 3, 7, 4};
int[][] commands = {{2, 5, 3}, {4, 4, 1}, {1, 7, 3}};
System.out.println(Arrays.toString(solution(array, commands)));
}
public static int[] solution(int[] array, int[][] commands) {
// 결과를 저장할 answer 배열을 생성. 크기는 commands의 길이와 같음.
int[] answer = new int[commands.length];
// 각 command 별로 잘라낸 부분 배열을 저장할 리스트
List<List<Integer>> list = new ArrayList<>();
// 모든 commands를 순회
for(int i = 0; i < commands.length; i++){
// 시작 인덱스 및 종료 인덱스 설정 (-1을 하는 이유는 배열 인덱스가 0부터 시작하기 때문)
int start = commands[i][0]-1;
int end = commands[i][1]-1;
// 특정 구간의 원소들을 저장할 리스트
List<Integer> small_list = new ArrayList<>();
// 지정된 구간의 원소들을 small_list에 추가
for(int j = start; j <= end; j++){
small_list.add(array[j]);
}
// 완성된 small_list를 list에 추가
list.add(small_list);
}
// 저장된 부분 배열들을 순회하면서 정렬 및 특정 위치의 값을 answer에 저장
for(int i = 0; i < list.size(); i++){
Collections.sort(list.get(i)); // 부분 배열 정렬
answer[i] = list.get(i).get(commands[i][2] - 1); // 지정된 위치의 값을 가져와서 answer 배열에 저장
}
return answer;
}
}