배열 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()
의 특성을 더 잘 이해할 수 있었다.