이 문제의 포인트는 "중복제거"가 아닌 "직전중복제외"
쉽게 생각했는데 꽤 어려웠다.
효율성 28.1
이번에도 역시 내가 자주 사용하는 패턴.
빈 배열을 만들고 map을 돌며 push
function solution(arr){
var answer = [];
arr.map((v,i) => answer[answer.length - 1] !== v ? answer.push(v) : null)
return answer;
}
하지만 좋지 않다...
- 쓸데없는 빈배열을 만들었고
- map으로 새로운 배열을 만들어서 밀어넣었다
효율성 28.1
시간복잡도로는 map과 filter 모두 O(n)으로 동일하긴 하다.
단순한 중복제거라면 filter로 간단한데 이건 어떻게 안되나...?
생각만 했는데
딱 filter로 구현한 코드가 있었다. 이렇게 간단하다니!
function solution(arr)
{
return arr.filter((val,index) => val != arr[index+1]);
}
다른 풀이도 있었지만 이게 제일 가독성이 좋은 것 같다.