알고리즘/프로그래머스

[프로그래머스] K번째수_JAVA

jimkwon 2022. 2. 22. 13: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

 

command 배열에는 [자를 array범위 시작, 범위 끝, K번째 수]가 들어있다.

따라서 array를 범위에 맞게 자르고, 해당 범위 내에서 K번째 수를 찾으면 되는 아주 단순한 로직

 

단, 코드를 좀 더 깔끔하고 효율적으로 짜길 원한다면 

array를 새로 선언하고, 범위에 맞게 일일히 집어넣는 방식 보다는

copyOfRange라이브러리를 추천한다.

Arrays.copyOfRange(복사할 array, 시작 index, 끝 index + 1)

 

// commands [a.b.c]에 따라 a~b까지 배열에 넣고, 정렬한 후 c번째를 뽑아 답에 넣는다.
import java.util.Arrays;
class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        
        for (int i = 0; i < commands.length; i++) {
            int[] temp = Arrays.copyOfRange(array, commands[i][0] - 1, commands[i][1]);
            Arrays.sort(temp);
            answer[i] = temp[commands[i][2] - 1];
        }
        return answer;
    }
}