DEVLOG

프로그래머스 알고리즘#12 - 같은 숫자는 싫어 본문

dev log/algorithm

프로그래머스 알고리즘#12 - 같은 숫자는 싫어

meroriiDev 2020. 12. 21. 10:26
728x90
반응형

<문제>

 

<풀이>

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

    arr.forEach((item)=>{
        if(answer.includes(item)) return;
        answer.push(item);
    })
    
    return answer;
}

처음엔 이렇게 생각을 했었다.

새로만드는 배열안에 이미 넣은 수가 있다면? 건너뛰고 다음 수를 push!

하지만 문제는 안에 있는 수를 다 건너뛰는게 아니라 연속되는 수만 건너뛰어야하기때문에 문제에 맞지 않는다.

 

function solution(arr)
{
    var answer = [];
    var c=0;

    arr.forEach((item,i)=>{
        if(answer[c-1]==item) return;
        answer.push(item);
        c++;
    })
    
    return answer;
}

그래서 그 다음으로 생각한게 c라는 변수를 따로 두어서 answer이라는 새 배열의 index를 따로 계산하고

그 index보다 하나 앞의 수가 지금 넣으려는 수와 같다면 건너뛰기라고 생각해서

문제를 해결했다.

 

하지만.. 쓸데없이 새로 만드는 변수가 조금 거슬렸다

더 간단하게 만들고싶다!

 

그래서 다른 사람들의 풀이를 봤더니 역시..궁금증이 바로 해결되었다.

바로 anwer의 length를 사용하는것!! 이를 사용해서 내 코드를 수정해보았다.

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

    arr.forEach((item,i)=>{
        if(answer[answer.length-1]==item) return;
        answer.push(item);
    })
    
    return answer;
}

별거아니지만 훨씬 깔끔해졌다!

 

 

+다른사람들 코드

function solution(arr)
{
    return arr.filter((val,index) => val != arr[index+1]);
}

오..filter...엄청 간단하네..하지만 난 내 코드도 조왕....

728x90
반응형
Comments