프로그래머스 같은 숫자는 싫어 (javascript)

이진우·2022년 7월 18일
0

문제 설명
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다.

예를 들면,
arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.


처음에 작성한 코드인데 이게 테스트1은 맞아서 뭔가 가능성이 있다고 생각했는데
다시보니까 배열의 첫번째 요소가 사라지기 때문에 배열이 삭제될때마다 순서가 완전히 엉켜 버려서
++위 코드 반복문의 마지막에 i--를 넣으면 실행은 되는데 효율성에서 탈락이다...😂

새로운 배열에 중복이 아니면 추가를 하는 방식으로 하면 엉킬일이 없을꺼 같아서 그방법으로 해보았다

function solution(arr)
{
    var answer = arr;
    let result = []

    for (let i=0; i<answer.length; i++){
        if(answer[i]!==answer[i+1]){
            result.push(arr[i])
        }
    }
    
    return result;
}

순서별로 비교한뒤 중복되지 않으면 현재 인덱스값의 배열을 넣어서 문제를 해결했다😎

profile
초보개발자의 개발일기

0개의 댓글