java.util 패키지와 Arrays 클래스에 대해 알아보자.
java.util
패키지는 프로그램을 개발하는 데 유용한 유틸리티 클래스들이 포함되어 있는 패키지다.
실제로 java.lang
패키지 다음으로 가장 많이 사용되는 패키지이며, import
문 없이 사용할 수 있는 java.lang
패키지와는 달리 java.util
패키지는 반드시 import
문을 작성해야 한다.
Arrays
클래스는 배열을 다루기 위한 다양한 메서드를 제공하는 클래스다.
이 클래스의 모든 메서드는 클래스 메서드 (static method)이므로, 객체 생성없이 사용할 수 있다.
메서드 | 설명 |
---|---|
toString() | 배열을 문자열로 변환하여 출력 |
sort() | 배열을 오름차순 정렬 |
binarySearch() | 정렬된 배열에서 특정 값을 이진 탐색하여 인덱스 반환 |
copyOf(arr, length) | 배열을 특정 길이만큼 복사하여 새로운 배열 반환 |
copyOfRange(arr, start, end) | 배열의 특정 범위 요소만 복사하여 새로운 배열 반환 |
equals(arr1, arr2) | 두 배열이 같은지 비교 |
fill(arr, value) | 배열의 모든 요소를 특정 값으로 채움 |
asList(arr) | 배열을 List 로 변환 |
// 정수를 내림차순으로 배치하기
import java.util.Arrays;
import java.util.Collections;
class Solution {
public long solution(long n) {
String[] str = String.valueOf(n).split("");
// sort() 메서드로 오름차순 정렬 후,
// Collections.reverseOrder()로 내림차순 정렬
Arrays.sort(str, Collections.reverseOrder());
return Long.parseLong(String.join("", str));
}
}
sort()
메서드를 사용해 문자열 배열을 정렬Collections.reverseOrder()
를 활용해 내림차순 정렬import java.util.Arrays;
// arr의 요소 중 divisor의 값으로 나누어 떨어지는 요소로만 새로운 배열 생성 후 오름차순 정렬
class Solution {
public int[] solution(int[] arr, int divisor) {
int[] answer = {}; // 길이가 0인 배열 선언
int i = 0;
for (int result : arr) {
if (result % divisor == 0) {
// copyOf() 메서드를 이용해 배열 크기 1 증가 후 값 추가
answer = Arrays.copyOf(answer, answer.length + 1);
// answer 배열의 길이 -1번째 인덱스에 대입
answer[answer.length - 1] = result;
}
}
// 나누어 떨어지는 요소가 없을 경우 -1을 추가
if (answer.length == 0) {
answer = Arrays.copyOf(answer, answer.length + 1);
answer[answer.length - 1] = -1;
}
// 배열 오름차순 정렬
Arrays.sort(answer);
return answer;
}
}
copyOf()
메서드를 사용해 배열 크기를 동적으로 변경sort()
로 정렬answer
배열이 비어 있다면, -1
을 추가해 반환내가 직접 문제를 풀면서 작성한 코드들이다.
특히 배열을 다뤄야 하는 문제에서 매우 유용하게 쓰인다.
배열을 다뤄야 하는 문제가 나오면 여러 번 사용해 보며 손에 익혀 보자.