[프로그래머스] Lv.1 같은 숫자는 싫어 (JavaScript)

혜린·2022년 2월 11일
0
post-thumbnail

🔐 문제

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

  • 제한조건
    • 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야함
    • arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return
    • arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return

  • Example


🔑 풀이

function solution(arr) {
  let answer = arr.filter((v, i) => {
		if(arr[i] === arr[i+1]) {
			return false;
		}
		return true;
	})
	return answer;  
}

// 리팩토링 후
function solution(arr) {
	return arr.filter((v, i) => arr[i] !== arr[i+1]);
}

📍 풀이과정

  • 원본배열에서 원하는 원소만을 걸러내는 것이 목적이기에, filter()를 사용하기 좋은 문제라고 생각했다.
  • filter()true로 반환한 값만을 새로운 배열에 넣는다는 점을 활용했다. 앞의 값과 뒤의 값을 비교해주며 같은 값이면 false를 반환해, 같은 값은 answer에 담기지 않도록 하였다.
  • truefalse만을 반환하는 식이 완성되어, 더 간단하게 한 줄로 코드를 줄여볼 수도 있었다.


💡 배운점

  • filter()를 잘 활용할 수 있었던 문제였다.
  • 스터디를 통해 리팩토링하는 과정에서 filter()의 특성을 더 잘 이해할 수 있었다.
profile
FE Developer

0개의 댓글