핵심 : copyOfRange(배열, 시작인덱스, 종료인덱스) / Arrays.sort(배열)
우선 문제 읽고 이해까지 가능했음!!! 그럼~
그 후 문제는 오랜만에 보는 2차원 배열,, 두둥!!
그리고 프로그래머스 틀이 익숙하지 않아서,, 기본으로 주어져있는걸 어떻게 시작하는지도 헷갈렸다ㅜ
(결국 인터넷 검색해서 이해하는걸 목표로)
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[] copyarr = Arrays.copyOfRange(array,commands[i][0]-1,commands[i][1]);
Arrays.sort(copyarr);
answer[i] = copyarr[commands[i][2]-1];
System.out.println(answer[i]);
}
return answer;
}
}
인터넷 찾아보는데 commands[i][0]-1 에서 도대체 -1을 왜 해주는건데...!!
이거때문에 헤맸는데 문제에 정답이 있었다.
copyOfRange(배열,시작인덱스,종료인덱스) 메소드는 시작인덱스는 포함하고, 종료인덱스는 포함하지 않는다.
문제를 보면 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고
즉, 1번을 보면 array[1, 5, 2, 6, 3, 7, 4]의 2번째(인덱스1)부터 5번째(인덱스4)까지 자르면 [5, 2, 6, 3]입니다.
그렇기 때문에 -1을 해줘야된다.
그후 자른 잘라서 복사한 배열을 Arrays.sort() 해주면 자동으로 오름차순 정렬된다.
마지막으로 copyarr[commands[i][2]-1] 에서도 -1을 해주는 이유는 문제에서 k번째에 있는 수(인덱스로는 k-1)이기 때문
'코딩테스트' 카테고리의 다른 글
프로그래머스_입양 시각 구하기(1) (0) | 2022.04.21 |
---|