Java/코딩테스트
[JAVA] 배열 Stream 활용해서 풀기
_JHS_
2025. 1. 20. 16:24
배열 문제에서 Stream 활용
1. 배열 내에 'target' 값이 몇 개 포함 되어있는지 카운트 => filter(), count() 사용
int[] arr = {1,1,3,3,4};
long count = Arrays.stream(arr) // 배열을 Stream으로 변환
.filter(num -> num == 3) // 3과 같은 숫자만 필터링
.count(); // 필터링된 요소 개수를 카운트
System.out.println(cnt) // 출력: 2
/*
long cnt = IntStream.of(arr)
.filter(num -> num == 3)
.count();
*/
2. 배열 내에 target 값보다 작은 수를 모두 찾아 배열로 만들기 => filter(), toArray() 사용
int[] arr = {1,1,2,3,4,5};
int[] answer = Arrays.stream(arr)
.filter(num -> num < 4)
.toArray();
for(int ans : answer){
System.out.print(ans + " "); // 출력: 1 1 2 3
}
3. 배열 내에서 최댓값, 최솟값 구하기 => max(), min(), orElse() 사용
int[] arr = {1,1,2,3,4,5};
int max = Arrays.stream(arr).max().orElse(-1);
int min = Arrays.stream(arr).min().orElse(-1);
System.out.print(max); // 출력: 5
System.out.print(min); // 출력: 1
4. 배열 내에서 원하는 값 index 찾기 => IntStream.range(), filter(), findFirst(), orElse() 사용
int arr = {1,45,31,2,5};
int target = 31;
int index = IntStream.range(0, arr.length) // 인덱스 범위 생성
.filter(i -> arr[i] == max) // 조건 필터
.findFirst() // 첫 번째 인덱스 반환
.orElse(-1); // 값이 없으면 -1 반환
System.out.println(index); // 출력: 2
5. 배열 내에서 중복된 값 제거 => distinct(), toArray() 사용
int[] arr = {1,1,2,3,3,4};
int[] newArr = Arrays.stream(arr).distinct().toArray();
for(int n:newArr) System.out.print(n + " "); // 출력: 1 2 3 4
6. 배열 값에 반복적으로 연산하기 => map(), toArray() 사용
int[] arr = {1,1,2,2,2,8};
int[] newArr = Arrays.stream(arr).map(i -> i-1).toArray();
for(int n : newArr){
System.out.print(n + " "); // 출력 : 0 0 1 1 1 7
}