Programmers > 같은 숫자는 싫어(JS)

jinvicky·2023년 11월 21일
0

ALG

목록 보기
1/62
post-thumbnail

Programmers에서 sql을 풀고 나서 알고리즘을 도전중이다.
실행 & 테스트 환경이 편한 장점이 있다.

같은 숫자는 싫어

링크
https://school.programmers.co.kr/learn/courses/30/lessons/12906

JS

// 내가 짠 코드. 정확성 통과, 효율성 실패.
function solution(arr)
{
    let answer = [];

    for(let i = 0; i < arr.length; i++) {
        if(answer.length < 1) { //length가 0이면 push
            answer.push(arr[i]);
        } else {
            let isSame = false;
            for(let j = 0; j < answer.length; j++) {
                isSame = answer[j] === arr[i];
            }
            if (!isSame) {
                answer.push(arr[i]);
            }
        }
    }
    return answer;
}

정확성에서는 맞았으나 효율성 측면에서 실패했다.
연속된 숫자의 중복을 제거하는 것이었는데 전체 중복 제거라고 생각했던 것이 잘못이었고, 심지어 의도한 대로 풀이하는 것도 실패했다;;

효율성까지 고려한 정답은 아래와 같다.

//현재 idx와 idx+1번째 요소를 비교한다.
function solution(arr)
{
    var answer = [arr[0]];

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

    return answer;
}

// filter 내장 함수를 사용한다.
function solution(arr)
{
    return arr.filter((val,index) => val != arr[index+1]);
}

filter()를 사용한 방법이 흥미로웠다.

profile
일단 쓰고 본다

0개의 댓글