끄적끄적 코딩일지

[Programmers]K번째수(난이도:★★★★) 본문

알고리즘

[Programmers]K번째수(난이도:★★★★)

BaekGyuHyeon 2022. 5. 16. 20:43

https://programmers.co.kr/learn/courses/30/lessons/42748

 

코딩테스트 연습 - K번째수

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

programmers.co.kr

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = {};
        for(int[] i : commands){
        //잘라서 배열 만들기
            int[] tmp = new int[i[1]-i[0]+1];
            int idx = 0;
            for(int j = i[0]-1; j < i[1];j++){
                tmp[idx] = array[j];
                idx++;
            }
            // 정렬하기
            sort(tmp);
            // 입력 index에 있는 숫자 더하기
            answer = addNum(answer,tmp[i[2]-1]);
        }
        return answer;
    }
    // 배열 append
    public int[] addNum(int[] arry,int num){
        int[] res = new int[arry.length+1];
        for(int i = 0 ; i < arry.length;i++){
            res[i] = arry[i];
        }
        res[res.length-1] = num;
        return res;
    }
    //정렬
     public void sort(int[] d){
        int idx = d.length-1;
        for(int i = 0 ; i < d.length;i++){
            for(int j = 0 ; j < idx; j++){
                if(d[j] > d[j+1]){
                    int tmp = d[j];
                    d[j] =d[j+1];
                    d[j+1] = tmp;
                }
            }
            idx--;
        }
    } 
}