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

박기영·2022년 9월 11일
0

프로그래머스

목록 보기
3/159
post-custom-banner

프로그래머스. 코딩테스트 고득점 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
나를 믿는 사람들을, 실망시키지 않도록
post-custom-banner

0개의 댓글