문제 설명
자르고 정렬한 배열의 K번째에 있는 수를 구하는 문제입니다.
문제 풀이
자르고 정렬한 배열의 K번째에 있는 수를 구하는 일을 commands의 1차원 배열의 길이만큼 반복하고,
answer에 넣어서 반환하면 됩니다.
주의할 점은 문제에서 1번째는 0번째 인덱스를 뜻하니 문제에 맞게 인덱스를 맞춰줘야 합니다.
i, j, k가 각각 commands[index, 0], commands[index, 1], commands[index, 2]라면
자른 배열의 크기는 j - i + 1이 됩니다.
자른 배열이 될 temp를 생성하고 array[i] - 1부터 array[j]까지 값을 넣어줍니다.
자른 후 배열을 정렬합니다.
정렬하는 방법은 여러 가지가 있으나 편하게 Array.Sort()를 사용하겠습니다.
정렬한 배열의 k - 1번째에 있는 수를 answer에 넣어주면 됩니다.
제출 코드
using System;
public class Solution
{
public int[] solution(int[] array, int[,] commands)
{
int[] answer = new int[commands.GetLength(0)];
for (int index = 0; index < answer.Length; index++)
{
int i = commands[index, 0];
int j = commands[index, 1];
int k = commands[index, 2];
int[] temp = new int[j - i + 1];
int idx = 0;
for (int arrayIndex = i - 1; arrayIndex < j; arrayIndex++)
{
temp[idx++] = array[arrayIndex];
}
Array.Sort(temp);
answer[index] = temp[k - 1];
}
return answer;
}
}