본문 바로가기
알고리즘/프로그래머스 문제-JS

[JS]같은 숫자는 싫어

by sweesweet 2022. 5. 31.

https://programmers.co.kr/learn/courses/30/lessons/12906

 

코딩테스트 연습 - 같은 숫자는 싫어

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은

programmers.co.kr

첫번째시도

단순하게 for문을 돌려서 앞의 인덱스와 비교했다!

function solution(arr)
{
   let result =[arr[0]]
   for(let i = 1; i<arr.length; i++){
       if(arr[i-1]!==arr[i]){
           result.push(arr[i])
       }
   }
   
    return result
}

두번째 시도

filter를 사용하였는데, 위의 for문과 같은 맥락으로 풀었다.

function solution(arr)
{
   return arr.filter((el,i)=>{
       if(i===0){// index가 0이라면
           return arr[i]===el //true값을위해서 그냥 이렇게 설정
       }
       return el!==arr[i-1]// el(=arr[i])과 arr[i-1]이 같지 않다면 
       
   })
}

세번째 시도

filter로 풀고 다른사람의 풀이를 보니, n 과 n+1을 비교할때는 마지막엔 arr[n], undefined가 나오기때문에 그 둘을 비교한다고 했다.

고로 이렇게 따로 if문으로 조건을 설정할 필요가 없다(더 간단)

function solution(arr)
{
   return arr.filter((el,i)=>el!==arr[i+1])
}