[프로그래머스 | Javascript] 같은 숫자는 싫어

박기영·2022년 9월 11일
0

프로그래머스

목록 보기
3/159

프로그래머스. 코딩테스트 고득점 Kit.
스택/큐. 1단계

solution

function solution(arr){
    let stack = [];
    
    while(arr.length > 0){
        let popedArr = arr.pop();
        
        // stack이 비었거나, stack 가장 위에 있는 값이 pop한 값과 다르면
        // stack에 popedArr를 넣는다.
        if(stack.length === 0 || stack[stack.length - 1] !== popedArr){
            stack.push(popedArr);
        } else if(stack[stack.length - 1] === popedArr){
            // stack의 맨 위에 있는 값이 pop한 값과 같으면
            // 중복이므로, stack에 넣지 않고 그대로 다음으로 넘어간다.
            continue;
        }
    }
    
    // arr의 가장 뒤부터 stack에 들어갔으므로 reverse를 해서 뒤집어줘야한다.
    return stack.reverse();
}

전형적인 스택 구조를 활용한 풀이이다.
가장 직관적이고, 머리 속으로 상상 가능한 풀이라고 생각된다.

다른 분의 풀이

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

이 풀이는 쇼킹해서 가져와봤다.
filter를 사용하는 것은 생각해볼 수 있는데, 이렇게 간단하게 사용될 것이라고는 상상하지 못했다..
현재 val과 다음 인덱스의 값이 일치하는 경우(중복되는 경우)를 지워버리는 매우 효율적인 방법이다.

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글

Powered by GraphCDN, the GraphQL CDN