코딩 테스트

프로그래머스) K번째 수 Lv1

우루쾅 2024. 2. 5. 17:22
728x90
반응형
SMALL

배열 안 특정 범위 내에서 정렬은 한 뒤 k 번째 수를 구하는 문제!

 

배열의 범위를 자르는 방법에 대해서 이것저것 쑤시고, commands 랑 같이 사용하려고 하다보니

for문이 4개나 중첩되어가고 있었다...

 

이건 나도 보기 어렵고 아무리 잘쳐줘도 정답은 아닌 것 같아 고민을 좀 하다 힌트(질문하기)를 사용했다

 

참고한 내용 중 commands에 나오는 시작번호, 끝번호, 선택 번호를 변수로 두고

배열과 함께 처리하는 메서드를 만들어서 처리하는 방법을 확인하고 문제를 해결하였다!

 

그리고 다른 사람들은 어떻게 풀었나 확인을 해보니 

배열을 정렬하는 함수 Arrays.copyOfRange 를 사용하여 문제를 풀었드라....

Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);

 

어쩐지 노가다 말고 더 좋은 방법이 있을 것 같았는데 이건 생각을 못했었다...

 

이런 함수들은 어떻게알고 사용하는걸까

외우는건지, 아니면 자주 풀다가 익혀지는건지

 

갈길이 멀다

 

 


정답

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];
            int end = commands[i][1];
            int select = commands[i][2];
            
            answer[i] = result(start, end, select, array);
        }
        
        return answer;
    }
    public int result(int start, int end, int select, int[] array){
        ArrayList<Integer> arr = new ArrayList<>();
        
        for(int i=start-1; i<end; i++){
            arr.add(array[i]);
        }
        
        Collections.sort(arr);
        
        return arr.get(select-1);
    }
}

 

 

 

 

출처

프로그래머스 - https://school.programmers.co.kr/learn/courses/30/lessons/42748

728x90
반응형
LIST