본문 바로가기
Algorithm/프로그래머스 고득점 Kit

[정렬] K번째 수 - Java 풀이

https://programmers.co.kr/learn/courses/30/parts/12198

 

프로그래머스

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

programmers.co.kr

문제

 

이해

commands 를 통해 [ start, end, K ] 가 들어온다.

command에 start, end 길이만큼 배열을 자른다.

자른 배열을 오름차순으로 기본 정렬한 후,

K번째 수를 정답 배열에 저장

 

포인트

여기서 포인트는 , 반복하면서 주어진 배열을 자르는 방법이다.

자바에서 배열의 범위만큼 자르는 메소드로 쓰기 좋은것이 copyOfRange(Array, int startIndex, int LastIndex)이다

이를 활용해주면 ,  주어진 배열은 Arrays.sort() 후 쉽게 정답을 구해줄 수 있다. 

 

풀이

import java.util.ArrayList;
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 [] arr = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
        	Arrays.sort(arr);
        	answer[i] = arr[commands[i][2]-1];
    	}
        return answer;
    }
}

 

레벨 1 다운 간단한 문제입니다만, 포인트가 되는 메소드를 모른다면, 코드가 길어질수 있으니,

배열을 SubRange로 잘라서 사용가능하게 해주는 Arrays.copyOfRange() 메소드를 꼭 기억하자