function solution(arr)
{
var answer = [];
// for(let i=1;i<arr.length;i++) {
// if(arr[i-1] !== arr[i]) {
// answer.push(arr[i-1]);
// }
// }
// if(arr[arr.length-1] !== answer[answer.length-1]) answer.push(arr[arr.length-1])
arr.reduce((acc, cur) => {
// console.log(acc,cur)
if(acc !== cur) answer.push(acc);
return cur;
})
if(answer.slice(-1)[0] !== arr.slice(-1)[0])
answer.push(arr.slice(-1)[0]);
return answer;
}
먼저 빠르게 생각나는 방식으로 for문을 돌면서 앞의 값과 다른지 확인하고 for문 밖에서 마지막 값에 대해 처리해주었다. 그리고 reduce
로도 풀 수 있을 거 같아서 한번 더 풀어보았다. 가장 좋아요가 많은 답은 filter
를 사용했는데 주어진 배열보다 큰 index를 사용하면 에러가 날 거 같아서 나는 따로 처리해주었는데 undefined
나 null
로 처리돼서 에러가 안 나는 거 같다.