티스토리 뷰
728x90
배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때,
commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하기
연산법 : 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하기
1. 변수 초기화
int[] answer = new int[commands.length]; // 2차원 배열의 길이로 초기화
2. 2차원 배열인 commands 변수의 i, j, k 구하기
for(int i=0; i<commands.length; i++){
int begin = commands[i][0]-1; // i번째 숫자부터 j번째 숫자까지 자를 때의 i
int end = commands[i][1]-1; // i번째 숫자부터 j번째 숫자까지 자를 때의 j
int pick = commands[i][2]-1; // k번째 있는 숫자를 구할 때의 k
...
3. i, j 만큼 자른 숫자들을 재정렬 후 slice 배열에 담은 다음, k번째 수를 픽하여 answer에 담기
...
int[] slice = new int[(end-begin)+1];
for(int j=begin; j<=end; j++){
slice[idx] = array[j];
idx++;
}
Arrays.sort(slice); // 오름차순으로 정렬
answer[i] = slice[pick]; // 순서대로 answer에 담기
}
return answer;
전체 코드
import java.util.Arrays;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
for(int i=0; i<commands.length; i++){
int begin = commands[i][0]-1;
int end = commands[i][1]-1;
int pick = commands[i][2]-1;
int idx = 0;
int[] slice = new int[(end-begin)+1];
for(int j=begin; j<=end; j++){
slice[idx] = array[j];
idx++;
}
Arrays.sort(slice);
answer[i] = slice[pick];
}
return answer;
}
}
728x90
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.1 예산 (Summer/Winter Coding(~2018)) (0) | 2024.11.27 |
---|---|
[프로그래머스] Lv.1 같은 숫자는 싫어 (1) | 2024.11.26 |
[프로그래머스] Lv.2 올바른 괄호 (0) | 2024.11.24 |
[프로그래머스] Lv.1 카드 뭉치 (2) | 2024.11.18 |
[프로그래머스] Lv.1 완주하지 못한 선수 (1) | 2024.11.17 |