
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성하라.
- 제한조건
- 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야함
- arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return
- arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return
- Example
function solution(arr) {
let answer = arr.filter((v, i) => {
if(arr[i] === arr[i+1]) {
return false;
}
return true;
})
return answer;
}
// 리팩토링 후
function solution(arr) {
return arr.filter((v, i) => arr[i] !== arr[i+1]);
}
📍 풀이과정
- 원본배열에서 원하는 원소만을 걸러내는 것이 목적이기에,
filter()를 사용하기 좋은 문제라고 생각했다.filter()는true로 반환한 값만을 새로운 배열에 넣는다는 점을 활용했다. 앞의 값과 뒤의 값을 비교해주며 같은 값이면false를 반환해, 같은 값은 answer에 담기지 않도록 하였다.true와false만을 반환하는 식이 완성되어, 더 간단하게 한 줄로 코드를 줄여볼 수도 있었다.
filter()를 잘 활용할 수 있었던 문제였다.filter()의 특성을 더 잘 이해할 수 있었다.