[프로그래머스] 같은 숫자는 싫어 - Javascript
문제
배열 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 | answer |
---|---|
[1,1,3,3,0,1,1] | [1,3,0,1] |
[4,4,4,3,3] | [4,3] |
풀이
배열의 요소들을 순회하면서 해당 요소 [i]와 다음 요소 [i+1]가 같다면 둘 중 하나만 넣어준다.
다르게 접근하면 해당 요소 [i]와 다음 요소 [i+1]가 다르다면 해당 요소만 넣어주면 된다.
헷갈린다면 하나씩 그림을 그려 대입해보면 쉽게 이해된다.
arr[1,1,3,3,0,1,1]을 예로 들어보자. 두 개의 요소가 다를 경우에만 첫번째 요소를 남긴다.
1. [1,1] (index 0,1) => 같다, continue
2. [1,3] (index 1,2) => 다르다, 1 push
3. [3,3] (index 2,3) => 같다, continue
4. [3,0] (index 3,4) => 다르다, 3 push
5. [0,1] (index 4,5) => 다르다, 0 push
6. [1,1] (index 5,6) => 같다, continue
7. [1,undefined] (index 6,7) => 다르다, 1 push
push되는 요소들을 나열하면 [1,3,0,1]이 된다.
function solution(arr)
{
var answer = [];
for(let i=0; i<arr.length; i++) {
if (arr[i] !== arr[i+1]) { // 다를 때만
answer.push(arr[i]);
}
return answer;
}
순서 7번을 보면 i가 마지막 요소인데 코드에서 arr[i+1]
을 어떻게 처리할까? 하는 궁금증이 생길 수 있다.
console.log(arr[7])
을 실행해보면 undefined
가 출력되는 것을 볼 수 있다.
Takeaway
문제가 헷갈려서 어렵다고 느껴질 수 있지만, 하나씩 대입해 그림을 그리거나 console.log
로 출력하며 확인해보면 쉽게 해결할 수 있다!
Author And Source
이 문제에 관하여([프로그래머스] 같은 숫자는 싫어 - Javascript), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pmk4236/프로그래머스-같은-숫자는-싫어-Javascript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)