문제 이해하기
같은 길이를 가진 숫자 배열 두 개를 인자로 받아, 첫 번째 배열의 앞에서부터 n번째 요소와 두 번째 배열의 뒤에서부터 n번째 요소를 더한 값으로 구성된 새로운 배열을 반환하는 JavaScript 함수를 작성해 보겠습니다.
예시
예를 들어 다음과 같은 두 개의 배열이 있다고 가정해 보겠습니다.
const arr1 = [34, 5, 3, 3, 1, 6];
const arr2 = [5, 67, 8, 2, 6, 4];
이 경우 기대되는 출력 결과는 다음과 같습니다.
const output = [38, 11, 5, 11, 68, 11];
실제 계산 과정을 살펴보면 다음과 같습니다.
- 첫 번째 요소: 34 + 4 = 38
- 두 번째 요소: 5 + 6 = 11
- 세 번째 요소: 3 + 2 = 5
- 네 번째 요소: 3 + 8 = 11
- 다섯 번째 요소: 1 + 67 = 68
- 여섯 번째 요소: 6 + 5 = 11
구현 코드
이를 구현한 전체 코드는 다음과 같습니다.
const arr1 = [34, 5, 3, 3, 1, 6];
const arr2 = [5, 67, 8, 2, 6, 4];
const reverseSum = (arr1, arr2) => {
const res = [];
for(let i = 0; i < arr1.length; i++){
res[i] = (arr1[i]) + (arr2[arr2.length - i - 1] || 0);
};
return res;
};
console.log(reverseSum(arr1, arr2));
코드 설명
위 코드의 동작 원리를 단계별로 살펴보면 다음과 같습니다.
- 결과값을 저장할 빈 배열
res를 먼저 선언합니다. for반복문을 사용하여 첫 번째 배열의 모든 요소를 순서대로 순회합니다.- 각 인덱스
i에서arr1[i]와arr2[arr2.length - i - 1], 즉 두 번째 배열의 끝에서부터 거꾸로 접근한 요소를 서로 더합니다. || 0연산자는 두 번째 배열이 첫 번째 배열보다 짧아 해당 인덱스가 존재하지 않을 때undefined대신 0으로 처리하여 오류를 방지해 줍니다.
출력 결과
콘솔에 출력되는 최종 결과는 다음과 같습니다.
[ 38, 11, 5, 11, 68, 11 ]