중복된 숫자를 없애줄때는 new set을 사용하면 아주 편하게 처리를 할 수 있다.
근데? 조건이 연속적으로 나타나는 숫자만 제거하고, 남은 수들은 그냥 놔두라고 적혀있다.
그럼 이때는 filter() 를 사용하는 것이 최선이라고 생각한다.
어떤식으로 비교를 하면 저렇게 가능할까?
원래 있는 숫자와 바로 다음의 숫자만 비교를 하고 값이 다를 경우에만 저장을 하면 되지 않을까? 라는 식으로 접근을 해봤다.
function solution(arr) { return arr.filter((num,index) => num !== arr[index+1]); }
처음 값인 arr[1,1,3,3,0,1,1]을 넣고 천천히 돌려보자
arr.filter((1,0) => 1 !== arr[0+1]) false // 1
arr.filter((1,1) => 1 !== arr[1+1]) true // 3
arr.filter((3,2) => 3 !== arr[2+1]) false // 3
arr.filter((3,3) => 3 !== arr[3+1]) true // 0
arr.filter((0,4) => 0 !== arr[4+1]) true // 1
arr.filter((1,5) => 1 !== arr[5+1]) false // 1
arr.filter((1,6) => 1 !== arr[6+1]) true // undefined
true인 값은
1,3,0,1이 된다.
arr[4,4,4,3,3]도 똑같게 돌아간다!