[Programmers] K번째 수

배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하는 문제

JAVA

public static int[] solution(int[] array, int[][] commands) {
        int cnt = commands.length;
        int[] answer = new int[cnt];

        for(int i = 0; i < cnt; ++i){
            answer[i] = getSelectValue(array, commands[i]);            
        }
        //System.out.println("answer ="+Arrays.toString(answer));
        return answer;
    }

    static int getSelectValue(int[] array, int[] command){
        int start = command[0] - 1 ;
        int end = command[1];
        int index = command[2] - 1;
        //System.out.println(start + " / "+end+ " / "+index);
        int[] temp = Arrays.copyOfRange(array, start, end);
        Arrays.sort(temp);
        //System.out.println("temp ="+Arrays.toString(temp));
        return temp[index];
    }    

 

이렇게 해도 됨
public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        for(int i = 0 ; i < commands.length; i++)
        {
            int size = commands[i][1] - (commands[i][0] - 1);
            int[] copyArray = new int[size];
            System.arraycopy(array, commands[i][0] - 1, copyArray, 0, size);
            Arrays.sort(copyArray);
            answer[i] = copyArray[commands[i][2]-1];
        }
        return answer;
    }

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.