프로그래머스. 코딩테스트 고득점 Kit.
스택/큐. 1단계
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과 다음 인덱스의 값이 일치하는 경우(중복되는 경우)를 지워버리는 매우 효율적인 방법이다.