문제 풀이: Stream 필터 사용
배열을 Stream으로 필터합니다. 필터는 이전 Element의 값과 일치하는지(Element의 연속성)에 대한 검사입니다.
이전 Element에 대한 연속성을 검증하려면 이전 Element 값을 저장하고 참조 할 수 있어야 합니다.
import java.util.*;
public class Solution {
public static class WrappedInt {
public Integer v = null;
}
public int[] solution(int []arr) {
WrappedInt prev = new WrappedInt();
return Arrays.stream(arr).boxed().filter(i -> {
if (null == prev.v) {
prev.v = i;
return true;
}
else if (i == prev.v) {
return false;
}
else {
prev.v = i;
return true;
}
}).mapToInt(Integer::intValue).toArray();
}
}
코드 | 비고 | |
배열을 |
||
필터 후 |
문제 풀이: 단순 Iterating으로 검사
Stream을 사용하지 않고 단순히 입력된 배열을 순회하면서 처리합니다.
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
List<Integer> o = new ArrayList<>();
Integer prev = null;
for (int el : arr) {
if (null == prev || prev != el) {
o.add(el);
}
prev = el;
}
return o.stream().mapToInt(Integer::intValue).toArray();
}
}
코드 | 비고 | |
직전 Element에 대한 값을 저장합니다. | ||
'Algorithm > Programmers' 카테고리의 다른 글
Level 1: 문자열 내 마음대로 정렬하기, Arrays.sort()와 Stream의 sorted() (0) | 2023.11.30 |
---|---|
Level 1: 나누어 떨어지는 숫자 배열, Stream의 filter()와 sorted() (0) | 2023.11.30 |
Level 1: 가운데 글자 가져오기, 짝수 홀수 판단과 배열 인덱싱 (0) | 2023.11.30 |
Level 1: 폰켓몬, 배열의 중복 제거 (0) | 2023.11.30 |
Level 0: n 번째 원소부터 배열 자르기 (0) | 2023.11.22 |