같은 숫자는 싫어

·2022년 3월 19일
0

알고리즘

목록 보기
3/47

중복된 숫자를 없애줄때는 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]도 똑같게 돌아간다!

profile
물류 서비스 Backend Software Developer

0개의 댓글