
Java Arrays 라이브러리 사용법
java.util.Arrays에 포함된 클래스로, 배열을 다루는 유틸리티 메서드들을 제공한다.
C에서 직접 구현하던 것들을 한 줄로 처리할 수 있다.
import java.util.Arrays;
배열의 일부를 잘라서 새 배열로 복사한다.
Arrays.copyOfRange(원본배열, 시작인덱스, 끝인덱스)
⚠️ 끝인덱스는 포함되지 않는다 (exclusive)
int[] arr = {1, 2, 3, 4, 5};
int[] result = Arrays.copyOfRange(arr, 1, 4);
// → {2, 3, 4} (index 1 이상, index 4 미만)
문제가 1-indexed 기준일 때, Java는 0-indexed라서 시작값에 -1 해줘야 한다.
끝값은 exclusive이기 때문에 -1 없이 그대로 넣으면 딱 맞게 잘린다.
// commands[i] = [2, 5, 3] 이면
int[] temp = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
// 2-1 = 1부터 5 미만까지 → index 1~4
배열을 오름차순으로 정렬한다.
int[] arr = {3, 1, 4, 1, 5};
Arrays.sort(arr);
// → {1, 1, 3, 4, 5}
기본 int[]로는 내림차순 직접 지정이 안 되고, Integer[]로 바꿔야 한다.
Integer[] arr = {3, 1, 4, 1, 5};
Arrays.sort(arr, (a, b) -> b - a);
// → {5, 4, 3, 1, 1}
int[] arr = {5, 3, 1, 4, 2};
Arrays.sort(arr, 1, 4); // index 1 이상, 4 미만만 정렬
// → {5, 1, 3, 4, 2}
배열에서 i번째부터 j번째까지 자르고, 정렬 후 k번째 수를 구한다.
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++) {
// 1. i번째 ~ j번째 자르기 (1-indexed → 0-indexed 변환)
int[] temp = Arrays.copyOfRange(array, commands[i][0] - 1, commands[i][1]);
// 2. 오름차순 정렬
Arrays.sort(temp);
// 3. k번째 수 저장 (1-indexed → 0-indexed 변환)
answer[i] = temp[commands[i][2] - 1];
}
return answer;
}
}
array = [1, 5, 2, 6, 3, 7, 4]
command = [2, 5, 3]
1. copyOfRange(array, 1, 5) → temp = [5, 2, 6, 3]
2. sort(temp) → temp = [2, 3, 5, 6]
3. temp[2] → answer = 5
| 메서드 | 설명 |
|---|---|
Arrays.sort(arr) | 오름차순 정렬 |
Arrays.sort(arr, from, to) | 범위 지정 정렬 |
Arrays.sort(arr, (a,b) -> b-a) | 내림차순 정렬 (Integer[] 필요) |
Arrays.copyOfRange(arr, from, to) | 배열 범위 복사 |
Arrays.copyOf(arr, newLength) | 배열 복사 (길이 지정) |
Arrays.fill(arr, value) | 배열 특정 값으로 초기화 |
Arrays.equals(arr1, arr2) | 두 배열 동등 비교 |
Arrays.toString(arr) | 배열 출력용 문자열 변환 |