[JAVA] K번째 수

NoHae·2025년 1월 7일
0

문제 출처

코딩테스트 연습 > 정렬 > K번째수
https://school.programmers.co.kr/learn/courses/30/lessons/42748

문제 설명

숫자가 원소로 들어있는 array 배열과 return 값에 대한 명령 commands 배열이 주어진다.
commands에 맞춰 array에서 배열을 추출한 후, 정렬하고 commands에 맞게 결과값을 return 할 배열에 삽입하라.

접근 방법

for-each 문을 이용하여 commands 배열의 명령을 추출한 뒤, 그에 맞춰 임시 배열인 temp에 복사하고, 정렬한다.
이후 answer에 삽입한다.

import java.util.*;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        int l = 0;
        int i,j,k;
        
        for(int a[] : commands){
            i = a[0]-1;
            j = a[1];
            k = a[2]-1;
            int temp[] = Arrays.copyOfRange(array,i,j);
            Arrays.sort(temp);
            answer[l++] = temp[k];
        }
        return answer;
    }
}

알게된 점

이 문제 같은 경우 정렬은 라이브러리에서 가져오므로 사실상 2차원 배열에 관한 문제이다. 이 문제를 풀면서 java의 Arrays.sort() 기능, Arrays.copyOfRange() 기능에 대해서 구체적으로 알게 되었다.

% Arrays.copyOfRange를 사용할 때 (array, i, j) 에서 array는 복사할 배열, i는 시작 인덱스, j는 끝 인덱스인줄 알았으나, 끝 인덱스가 아닌 python의 range 처럼 해당 요소 직전까지 자르는 것이었다.

문제푼 흔적

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글