문제 소개
숫자 배열과 목표 합(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는 앞선 숫자와 더했을 때 목표 값이 되지 않으므로 그대로 유지됩니다.