Algorithm JS | 프로그래머스 코딩테스트_같은 숫자는 싫어

앙두·2023년 7월 3일
0

Algorithm

목록 보기
16/17

📑 문제

문제
  • 배열 내 연속적으로 반복되는 숫자가 있다면, 하나만 남기고 제거 (단순히 반복되는x, 중복되는x)
  • 들어있는 숫자 순서대로 반환
  • 배열 내 원소들은 0이상 9이하의 숫자

🤓 나의 풀이

처음에는 '중복되는' 숫자를 제거하는 방식으로만 생각해서, new Set() 메서드를 사용했다. 하지만 문제가 말하는 건, '연속적으로 반복되는' 숫자가 있다면 하나를 남기는 것!

  • 내가 생각했던 중복되는 요소를 하나만 남기는 방식
const myArr = [2, 2, 3, 3, 3, 0, 2, 2];

const solution = (arr) => [...new Set(arr)]
// 반환 값 : [2, 3, 0]

모든 중복요소를 하나만 남기고 삭제해버리기 때문에, 문제의 의도와 맞지 않다.
문제의 의도처럼, 연속되는 숫자만 제거하는 방식이라면 반환 값이 [2, 3, 0, 2]로 반환돼야 한다.

  • 해결 풀이
const solution = (arr) =>
arr.filter((el, i, self) => self[i] !== self[i+1])

어차피 배열을 반환시켜줘야 하기 때문에, filter() 메서드를 사용했다.
filter()를 걸어준 배열(self)의 각 index elementnext index element같지 않은 요소들만 배열에 담아 반환시켜주는 방식으로 풀었다.

그리구 다른 사람들이 풀이 중 가장 좋아요를 많이받은 풀이가 나와 같았다 ㅎ,.ㅎ ✌🏻
나 초큼 성장했을지도 ,, 😎🥳 ?

profile
쓸모있는 기술자

0개의 댓글