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

·2024년 4월 6일

문제

배열 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 : [1,1,3,3,0,1,1]

출력

[1,3,0,1]

내가 했던 풀이 방법

  1. at() 메소드를 이용하여, 현재 arr에 마지막 원소와 현재 arr값이 같지 않을 경우에만 answer에 값을 넣어준다. (즉, arr에 직전에 들어간 원소와 현재 값이 같지 않을 경우에만 수행)

코드

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

회고

이 문제를 통해서 at() 메소드를 알게되었다. at() 메소드는 최근에 생긴 메소드이고, 배열에 접근하여 값을 얻는 메소드이다. 즉 array[i]와 같은 역할을 하는데, array[i]보다 좋은 점은 인덱스 값에 음수 값을 추가할 수 있다는 것이다. 예를 들어 array[-1]의 경우는 마지막 요소를 array[-2]는 마지막 앞 요소의 값을 가져오게 되는 것이다. 즉 음수도 무한정으로 사용가능하진 않고, 배열의 길이만큼만 사용할 수 있다.
확실히 자바스크립트의 새로운 메소들이 정~말 유용한 것들이 많고, 그로인해 자바스크립트를 작성하기가 너무 편해진 것 같다. 자바스크립트를 웹 개발 언어로만 배울 때보다 프로그래밍 언어로 배울 때 더 재미를 느끼는 것 같다.

profile
Frontend🍓

0개의 댓글