Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 합이 목표값이 되는 연속 숫자 쌍의 두 번째 숫자 제거하기

문제 소개

숫자 배열과 목표 합(target sum)을 입력으로 받는 JavaScript 함수를 작성해야 합니다.

이 함수는 배열에서 인접한 두 숫자의 합이 목표 값과 일치하는 모든 쌍을 찾아내고, 해당 쌍의 두 번째 숫자를 결과에서 제거한 새로운 배열을 반환해야 합니다.

예제 코드

다음은 이 문제를 해결하는 코드입니다 −

const arr = [1, 2, 3, 4, 5];
const target = 3;

const removeSecond = (arr = [], target = 1) => {
    const res = [arr[0]];
    for(let i = 1; i < arr.length; i++){
        if(arr[i] + res[res.length - 1] !== target){
            res.push(arr[i]);
        }
    }
    return res;
};

console.log(removeSecond(arr, target));

코드 동작 원리

이 알고리즘은 다음과 같은 단계로 동작합니다.

먼저 결과 배열 res의 첫 번째 요소로 원본 배열의 첫 값을 넣어 초기화합니다. 그다음 반복문을 통해 배열의 나머지 요소들을 하나씩 확인하면서, 현재 숫자와 결과 배열의 마지막 숫자를 더한 값이 목표 값과 다른 경우에만 현재 숫자를 결과 배열에 추가합니다.

만약 두 숫자의 합이 목표 값과 일치한다면, 현재 숫자(즉, 쌍의 두 번째 숫자)는 추가되지 않고 건너뛰게 됩니다. 이 과정을 거치면 자연스럽게 조건에 맞는 쌍의 두 번째 숫자들만 제거된 배열이 완성됩니다.

출력 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다 −

[ 1, 3, 4, 5 ]

출력 결과를 살펴보면, 배열 [1, 2, 3, 4, 5]에서 인접한 숫자 1과 2의 합이 목표 값인 3과 일치하므로 쌍의 두 번째 숫자인 2가 제거되었습니다. 반면 3, 4, 5는 앞선 숫자와 더했을 때 목표 값이 되지 않으므로 그대로 유지됩니다.