본문 바로가기
Algorithm (PS)/프로그래머스

[프로그래머스 Level 1] K번째수(Java)

by 태크민 2023. 8. 26.

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

import java.util.*;
class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        for(int i=0; i<commands.length; i++){
            int start = commands[i][0]-1; 
            int end = commands[i][1]-1;
            int findIdx = commands[i][2]-1; //찾고자 하는 idx
            
            int[] subArray = new int[end-start+1]; //자른 Array
            int idx=0;
            for(int j=start; j<=end; j++){
                subArray[idx++] = array[j];
            }            
            //정렬
            Arrays.sort(subArray);
                                
            answer[i] = subArray[findIdx];
        }
        return answer;
    }
}

 

다른 사람 풀이를 확인해보니 Arrays 클래스의 copyOf 함수를 통해 가독성 있게 풀이를 할 수도 있는 것 같다.

다른 사람 풀이 코드

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;
    }
}