코딩테스트 풀이/JAVA
[프로그래머스/Lv.1] k번째 수
무지맘
2022. 11. 22. 00:13
1. Input
1) 정수 배열 array
2) [i, j, k]를 원소로 가진 2차원 배열 commands
2. Output
1) array의 i번째 숫자부터 j번째까지 자르고 정렬했을 때 k번째 수를 담은 배열
3. Constraint
1) array의 길이는 1 이상 100 이하
2) array의 각 원소는 1 이상 100 이하
3) commands의 길이는 1 이상 50 이하
4) commands의 각 원소의 길이는 3
4. Example
Input: array={1,5,2,6,3,7,4}, commands={{2,5,3},{4,4,1},{1,7,3}} -> Output: {5,6,3}
설명:
- array의 2번째~5번째는 {5,2,6,3}이고, 정렬하면 {2,3,5,6}이므로 3번째 숫자는 5
- array의 4번째~4번째 숫자는 {6}이고, 정렬할 필요가 없으며, 첫번째 숫자는 6
- array의 1번째~7번째 숫자는 array 전체이고, 정렬하면 {1,2,3,4,5,6,7}이므로 3번째 숫자는 3
5. Code
1) 첫 코드(2022/??)
import java.util.Arrays;
int n=0, l=commands.length;
int[] index = new int[3]; // 문제의 i, j, k
int[] answer = new int[l];
int[] slice;
while(n<l){
// 커맨드 인덱스 받아오기
for(int a=0 ; a<3 ; a++)
index[a] = commands[n][a];
// 받은 인덱스로 배열 자르기
slice = Arrays.copyOfRange(array, index[0]-1, index[1]);
// 자른 배열 정렬하기
Arrays.sort(slice);
// k번째 수 저장하기
answer[n++] = slice[index[2]-1];
}
return answer;