알고리즘/JAVA

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

야아옹 2020. 10. 21. 13:45

문제 : 문제 : array 의 i 번째 숫자부터 j 번째 숫자까지 자르고 정렬했을때 K 번째의 수를 구하기

 

예시 :

 

[1, 5, 2, 6, 3, 7, 4]를 2번째부터 5번째까지 자른 후 정렬합니다. [2, 3, 5, 6]의 세 번째 숫자는 5입니다.
[1, 5, 2, 6, 3, 7, 4]를 4번째부터 4번째까지 자른 후 정렬합니다. [6]의 첫 번째 숫자는 6입니다.
[1, 5, 2, 6, 3, 7, 4]를 1번째부터 7번째까지 자릅니다. [1, 2, 3, 4, 5, 6, 7]의 세 번째 숫자는 3입니다.

 

풀이 :

package com.company;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class GetKnumber {

    static int[] array = {1,5,2,6,3,7,4};
    static int[][] commands = {{2,5,3}, {4,4,1},{1,7,3}};
    
    public static void main(String[] args) {
        for (int item: solution(array,commands))
            System.out.println(item);
    }
    static int[] solution(int[] array, int[][] commands )
    {
        List<Integer> answer = new ArrayList<>();

        int startNum =0;
        int lengthNum = 0;
        int kNum =0;

        for(int i = 0; i < commands.length; i++)
        {
            startNum = commands[i][0];
            lengthNum = commands[i][1];
            kNum = commands[i][2];

            int[] resutlArr =new int[lengthNum - startNum + 1];
            int index = 0;

            for (int j= startNum - 1; j < lengthNum; j++)
            {
                resutlArr[index] = array[j];
                index++;
            }
            Arrays.sort(resutlArr);
            answer.add(resutlArr[kNum - 1]);
        }
        return answer.stream().mapToInt(Integer::intValue).toArray();
    }
}