이전에 풀었던 문제들을 다시 풀어 보았다.
Arrays.copyOfRange()
메서드 활용Arrays.copyOfRange(arr, n1, n2)
-> 원본배열, 시작인덱스, 끝인덱스.import java.util.Arrays;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length]; // new int[3]
for(int i = 0; i < commands.length; i++) {
int start = commands[i][0]; // 시작 인덱스
int end = commands[i][1]; // 끝 인덱스
int th = commands[i][2]; // 자를 n번째 자리
int[] arr = Arrays.copyOfRange(array, start-1, end); // 시작인덱스부터 끝인덱스까지 복사한 배열
Arrays.sort(arr); // 배열 오름차순 정렬
answer[i] = arr[th-1]; // n번째 숫자만 가져오기
}
return answer;
}
}
Arrays.sort()
-> 배열을 오름차순 정렬import java.util.Arrays;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length]; // new int[3]
int n = 0;
for(int i = 0; i < commands.length; i++) {
int k = 0;
int start = commands[i][0]; // 시작 인덱스
int end = commands[i][1]; // 끝 인덱스
int th = commands[i][2]; // 자를 n번째 자리
int[] arr = new int[end - start + 1];
for(int j = start; j <= end; j++) {
arr[k++] = array[j - 1]; // 시작인덱스부터 끝인덱스까지 복사
}
Arrays.sort(arr); // 배열 오름차순 정렬
answer[n++] = arr[th - 1]; // n번째 숫자만 가져오기
}
return answer;
}
}
java.util.Arrays 클래스를 사용했는데 퀵 정렬로도 풀이가 가능한 것을 알게되었다.
알고리즘 공부를 선행하고 퀵 정렬 방법으로도 풀어봐야겠다.
https://school.programmers.co.kr/learn/courses/30/lessons/42748