문제 : 문제 : 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();
}
}
'알고리즘 > JAVA' 카테고리의 다른 글
[JAVA] 제일 작은수 제거하기 - 프로그래머스 (0) | 2020.10.21 |
---|---|
[JAVA] 최대공약수, 최대공배수 - 프로그래머스 (0) | 2020.10.21 |
[JAVA] 모의고사 - 프로그래머스 (0) | 2020.10.20 |
[JAVA] 두개 뽑아서 더하기 - 프로그래머스 (0) | 2020.10.20 |
[JAVA] 숫자 배열 중 과반수 찾기 (0) | 2020.10.20 |