본문 바로가기

프로그래머스

k번째수

728x90

두번째 시도

import java.util.Arrays;
class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        int cnt =0;
        for(int i=0;i<commands.length;i++)
        {
            
            int first = commands[i][0]-1;
            int last = commands[i][1];
            int size = last - first;
            int pick = commands[i][2]-1;
            int[] temp = new int[size];
            for(int j=first;j<last;j++)
            {
                temp[j - first] = array[j];
                // System.out.println(array[j - first]);
            }
            Arrays.sort(temp);
            answer[cnt] = temp[pick];
            cnt++;
            
        }
        return answer;
    }
}

고찰 : 역시 똑같은 방법으로 풀었다. 하지만 소팅 부분과 시간 단축은 좀 하였다.

 

베스트 코드(프로그래머스 출처)

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;
    }
}
int[] temp = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);

이부분 너무 좋았다. 역시 자바의 세계는 양파같은 매력이 있네요...

 

굿굿

728x90

'프로그래머스' 카테고리의 다른 글

콜라츠 추측  (0) 2023.01.10
숫자 문자열과 영단어  (0) 2022.12.26
행렬의덧셈  (0) 2022.12.26
나누어 떨어지는 숫자 배열  (0) 2022.12.26
하샤드수  (0) 2022.12.26