Algorithm/Java

[프로그래머스 고득점 kit - 정렬] - K 번째수

__hseong__ 2025. 4. 29. 21:35
728x90
반응형

오늘 풀어볼 문제는 프로그래머스의 고득점 kit 중 정렬 부분의 문제이다. 사실 파이썬으로 풀어본 적이 있어서 넘어갈까 했지만 다가올 kt 에이블스쿨의 코딩 마스터스( 코딩테스트 )를 고득점 하기 위해서 기본기를 더 잡고자 스스로 코딩을 해보려고 한다!!

import java.util.*;

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

        for (int idx = 0; idx < commands.length; idx++) {
            int i = commands[idx][0];
            int j = commands[idx][1];
            int k = commands[idx][2];

            // i번째부터 j번째까지 자르기 (배열 인덱스는 0부터 시작하니까 i-1 ~ j-1)
            int[] temp = Arrays.copyOfRange(array, i - 1, j);

            // 정렬
            Arrays.sort(temp);

            // k번째 숫자 선택 (배열 인덱스는 0부터 시작하니까 k-1)
            answer[idx] = temp[k - 1];
        }

        return answer;
    }
}
  • 사실 크게 정리할 것은 없고 코딩테스트 때 사용할 함수를 알아보면 파이썬과 똑같이 자바도 index 는 0에서부터 시작하고 인덱스를 할 때 끝(=end) 범위는 실제보다 -1 까지 인덱스 되기 때문에 이는 파이썬에서 슬라이싱 한 것과 똑같다.
  • 여기서 사용한 것은 Arrays.copyOfRange(인덱스하려는 배열이름,인덱스 시작번호,인덱스끝번호-1) 이렇게 선언하면 된다.
  • 이렇게 자르고나면 Arrays.sort(정렬하려는 배열 이름) 하면 기본적으로 오름차순으로 정렬이된다
  • 그 후에 k번째 원소를 골라야하니까 k-1을 해줘야 인덱스에서 해당 원소를 조회가능하므로 answer에 해당 commands의 길이만큼 각각 해답을 넣게된다.
728x90
반응형