코린이의 소소한 공부노트

[프로그래머스/Lv.1] k번째 수 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.1] k번째 수

무지맘 2022. 11. 22. 00:13

1. Input

1) 정수 배열 array

2) [i, j, k]를 원소로 가진 2차원 배열 commands

 

2. Output

1) arrayi번째 숫자부터 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}

설명:

- array2번째~5번째는 {5,2,6,3}이고, 정렬하면 {2,3,5,6}이므로 3번째 숫자는 5

- array4번째~4번째 숫자는 {6}이고, 정렬할 필요가 없으며, 첫번째 숫자는 6

- array1번째~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;