[프로그래머스] K번째 수

배열 array를 i번째 부터 j번째 까지 자르고 정렬했을 때, k번째에 있는 수를 구한다.

commands 배열의 각 행, 즉 i,j,k를 잘 뽑아내고 정렬 후 k번째 수를 answer 배열에 넣기만 하면 된다.

i, j, k 명령 수행 시 k번째 수는 ‘하나’가 나오게 된다. commands의 길이는 1~50 이하 이므로 k번째 수를 담는 answer 배열의 크기는 commands.length 만큼 할당해야 한다. 그리고 i, j, k 값들을 각각 치환하여 사용하기 쉽게 만들었다. 또한 i번째 부터 j번-[ys.copyOfRange() 함수를 사용했다. 말 그대로 구간을 정해 copy하는 함수다.

첫번째 인자부터 배열의 주소(이름), 시작 인덱스, 종료 인덱스(종료 인덱스는 구간에 포함하지 않는다.) 이다.

1
2
int[] array2 = Arrays.copyOfRange(array,i-1,j); 
// 배열은 0부터 시작하므로 i-1 한다.

Arrays.sort() 해주고, k번째 (k-1번째 index) 수를 answer 배열에 넣고 return 해주면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Arrays;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];

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

int[] array2 = Arrays.copyOfRange(array,i-1,j);
Arrays.sort(array2);
answer[index] = array2[k-1];

}
return answer;
}
}
Author

MoonDoni

Posted on

2020-01-27

Updated on

2020-03-05

Licensed under

댓글