알고리즘/프로그래머스 문제풀이

[프로그래머스] k번째 수 java / 배열 자르기 / 배열 정렬 /Arrays.copyOfRange

자바칩 프라푸치노 2021. 5. 26. 08:38

1. 먼저 array를 commands[i][0] 인덱스 부터 commands[i][1]인덱스까지 자른다

2. 그 배열을 오름차순 정렬한다.

3. 그 배열에서 commands[i][2] 번째 수를 answer배열에 넣는다 ( 인덱스는 -1)

 

 

결과코드

package programm;

import java.util.Arrays;

public class solution {

	
	    public int[] solution(int[] array, int[][] commands) {
	        int[] answer = new int[commands.length];
	        
	        for (int i = 0; i < commands.length; i++) {
	        	int[] copyarr = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
	        	Arrays.sort(copyarr);
	        	answer[i] = copyarr[commands[i][2]-1];
	        	
			}
	        return answer;
	    }
	
	
	public static void main(String[] args) {
		
		solution s = new solution();
		int[] array = {1, 5, 2, 6, 3, 7, 4}	;
		int[][] commands = {{2, 5, 3}, {4, 4, 1}, {1, 7, 3}};
		int[] answer = s.solution(array, commands);
		System.out.println(Arrays.toString(answer));
	}

}

 

answer은 commands의 길이만큼 생성될 것이기에 선언을 해주었다.

 

Arrays.copyOfRange

원본 배열에서 어디서 부터 어디까지 잘라서 배열로 리턴하는 함수이다.

두번째 파라미터에는 시작 인덱스, 세번째 파라미터에는 끝 인덱스를 넣는데 끝 인덱스는 포함하지 않는다

Arrays.sort

오름차순 정렬을 해준다.

 

728x90