K번째수 [Java]

sua·2022년 12월 26일
0

문제


풀이

import java.util.*;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        ArrayList<ArrayList<Integer>> list = new ArrayList<>();
        
        for(int i = 0; i < commands.length; i++) {
            int num1 = commands[i][0];
            int num2 = commands[i][1];
            ArrayList<Integer> temp = new ArrayList<>();
            for(int j = num1 - 1; j < num2; j++) {
                temp.add(array[j]);
                Collections.sort(temp);
            }
            list.add(temp);
        }
        
        for(int i = 0; i < commands.length; i++) {
            answer[i] = list.get(i).get(commands[i][2] - 1);
        }
        
        return answer;
    }
}

commands의 각 배열마다 정렬시켜서 저장시킬 리스트 안에 리스트인 list를 생성한다.
그런 다음, commands를 통해 for문을 돌리고 중첩으로 j가 i번재 commands 배열요소중에 0번째 요소인 num1 - 1부터 i번째 commands 배열요소중에 1번째 요소인 num2까지 돌면서 temp ArrayList에 array의 num1-1 번째 요소부터 num2번째 요소까지 add해준뒤 temp를 정렬해준다. 그런 다음 temp 배열을 list에 추가시켜준다.

마지막으로는 answer 배열에 list배열안의 배열의 k번째 요소를 get하여 할당시켜주면 된다.

결과

profile
가보자고

0개의 댓글

관련 채용 정보