같은 숫자는 싫어(연속된 숫자 제거)

형동킴·2022년 2월 12일
0
post-thumbnail

연속된 문자열, 숫자를 비교하는 문제를 풀 때마다 헷갈려서 정리해두고자 글을 작성하게 되었다.

function solution(arr)
{   
    let i = 0
    const answer = []
    while(true){
        //i가 마지막 인덱스까지 왔을 때 종료
        if(i==arr.length-1){
            answer.push(arr[i])
            break
        }
        if(arr[i]===arr[i+1]){
            i += 1

        }else{
            answer.push(arr[i])
            i+=1
            
        }
    }
    return answer
}

알고리즘 설명

완전탐색을 해야하는 문제이다.

  1. i를 하나씩 증가시키며, arr[i]와 arr[i+1]과 비교.

  2. 같으면 i만 증가시키고, 다르면 arr[i]값 새배열에 push하고 i 증가시킴.
    (연속으로 중복된 값 하나만 남기면 되기 때문에, 같은 값일
    때 다음 비교로 넘어가고, 다른 값 만났을 때 - 더 이상같은 값이 없을 경우- 중복 값을 answer에 push)

  3. i값이 마지막 인덱스 일 때, 마지막 값 추가해주고 종료.



다른 풀이

return arr.filter((v,i)=>v!==arr[i+1])
  • 위의 방식과 같은 원리이다.

  • i가 마지막 인덱스일 때, arr[i+1]은 undefinded이기 때문에, 항상 true가 return 된다.

어떻게 문제를 풀 것인지 확실히 하고 코드 작성하자

profile
결과보다 성장을!

0개의 댓글