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

JavaScript 역합(Reverse Sum) 배열 구현하기 – 두 배열의 요소를 반대 방향으로 더하는 방법


이번 글에서는 reverseSum()이라는 함수를 작성해 보겠습니다. 이 함수는 숫자로 이루어진 배열 두 개(예: first와 second)를 인자로 받아, 다음과 같은 규칙에 따라 새로운 배열을 생성하여 반환합니다.

  • 첫 번째 요소는 '첫 번째 배열의 첫 번째 요소'와 '두 번째 배열의 마지막 요소'의 합입니다.

  • 두 번째 요소는 '첫 번째 배열의 두 번째 요소'와 '두 번째 배열의 뒤에서 두 번째 요소'의 합이며, 이후에도 같은 방식으로 진행됩니다.

만약 한쪽 배열의 요소가 먼저 소진되면, 나머지 배열의 남은 요소들은 그대로 결과 배열에 순서대로 추가합니다. 그럼 이 함수의 코드를 작성해 보겠습니다.

예제 코드

const first = [23, 5, 7, 2, 34, 7, 8];
const second = [2, 4, 21, 4, 6, 7, 56, 23, 32, 12];
const reverseSum = (first, second) => {
    const sumArray = [];
    let i, j, k;
    for(i = 0, j = second.length - 1, k = 0; i < first.length && j >= 0;
    i++, j--, k++){
        sumArray[k] = first[i] + second[j];
    };
    while(i < first.length){
        sumArray[k] = first[i];
        k++;
        i++;
    };
    while(j >= 0){
        sumArray[k] = second[j];
        k++;
        j--;
    };
    return sumArray;
};
console.log(reverseSum(first, second));

실행 결과

콘솔에는 아래와 같은 결과가 출력됩니다.

[
    35, 37, 30, 58, 41,
    13, 12, 21, 4, 2
]

결과 분석

이 출력값이 어떻게 만들어졌는지 살펴보겠습니다. 예를 들어 위 결과의 첫 번째 값인 35는 '첫 번째 배열의 첫 번째 요소'와 '두 번째 배열의 마지막 요소'를 더한 값입니다.

 23 (첫 번째 배열의 첫 번째 요소)
+12 (두 번째 배열의 마지막 요소)
------
35

같은 원리로 두 번째 값 37은 first[1](5)과 second[8](32)의 합입니다. 즉, 한쪽 배열은 앞에서부터, 다른 쪽 배열은 뒤에서부터 포인터를 이동시키며 요소를 하나씩 더해 나가는 방식입니다. 두 번째 배열(second)이 더 길기 때문에, first 배열의 모든 요소가 소진된 후에는 second 배열의 앞쪽에 남아 있던 요소들(21, 4, 2)이 그대로 결과 배열의 끝에 추가된 것을 확인할 수 있습니다.