[프로그래머스/js] 같은 숫자는 싫어

hare·2023년 5월 16일
0

30분정도 소요.. 미쳤습니까? 정신차려라.

[level 1] 같은 숫자는 싫어 - 12906

문제 링크

성능 요약

메모리: 83.1 MB, 시간: 24.93 ms

구분

코딩테스트 연습 > 스택/큐

채점결과

Empty

문제 설명

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

  • arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
  • arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.

배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.

제한사항
  • 배열 arr의 크기 : 1,000,000 이하의 자연수
  • 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수

입출력 예
arr answer
[1,1,3,3,0,1,1] [1,3,0,1]
[4,4,4,3,3] [4,3]
입출력 예 설명

입출력 예 #1,2
문제의 예시와 같습니다.

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

첫 시도

반복문 사용해서 인덱스와 바로 다음 인덱스의 값이 같으면 shift나 splice로 해당 인덱스를 제거(?)
➡️ 원하는대로 동작안함. 배열 첫 원소에만 적용되고 다음부턴 어떻게 풀어갈지 막막해짐.

두 번째 시도

같은 방식이지만 filter를 써보자.
➡️ 항상 콜백에 element만 써왔는데 검색 후 index, source(순회할 객체)도 사용하면 되겠다는 판단이 듦.

결과

function solution(arr)
{
    const copy = arr.filter((ele, idx, source)=>
        ele != source[idx+1]
    )
    return copy
}

알기쉽게 정리된 블로그
filter()-mdn

profile
해뜰날

0개의 댓글