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

JavaScript로 배열의 시작과 끝 요소를 쌍으로 묶는 방법

JavaScript에서 숫자 또는 문자열로 이루어진 배열을 입력받아, 새로운 이중 배열(배열의 배열)을 반환하는 함수를 작성해 보겠습니다. 각 하위 배열은 정확히 두 개의 요소를 포함하며, 앞에서 n번째 요소뒤에서 n번째 요소가 서로 짝을 이루는 구조입니다.

문제 이해하기

예를 들어, 다음과 같은 배열이 있다고 가정해 보겠습니다.

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

이 경우 원하는 출력 결과는 다음과 같습니다.

const output = [[1, 6], [2, 5], [3, 4]];

첫 번째 요소인 1과 마지막 요소인 6이 한 쌍을 이루고, 두 번째 요소인 2와 뒤에서 두 번째 요소인 5가 쌍을 이루는 식으로 배열의 양 끝에서부터 안쪽으로 이동하며 요소들을 묶습니다.

구현 코드

다음은 위 문제를 해결하는 JavaScript 코드입니다.

const arr = [1, 2, 3, 4, 5, 6];
const edgePairs = arr => {
    const res = [];
    const upto = arr.length % 2 === 0 ? arr.length / 2 : arr.length / 2 - 1;
    for(let i = 0; i < upto; i++){
        res.push([arr[i], arr[arr.length-1-i]]);
    };
    if(arr.length % 2 !== 0){
        res.push([arr[Math.floor(arr.length / 2)]]);
    };
    return res;
};
console.log(edgePairs(arr));

코드 동작 원리

이 코드의 핵심 로직을 단계별로 살펴보겠습니다.

1. 반복 횟수 계산

배열 길이가 짝수라면 전체 길이의 절반만큼, 홀수라면 절반에서 1을 뺀 횟수만큼 반복합니다. 이는 가운데 요소가 스스로와 짝을 이루지 않도록 하기 위함입니다.

2. 양 끝 요소 매칭

for 반복문에서 인덱스 i의 요소와 arr.length - 1 - i 인덱스의 요소, 즉 뒤에서 대응되는 요소를 하나의 배열로 묶어 결과 배열에 추가합니다.

3. 홀수 길이 처리

배열 길이가 홀수인 경우, 정확히 가운데 위치한 요소는 짝이 없으므로 단일 요소를 가진 하위 배열로 따로 추가됩니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 출력이 나타납니다.

[ [ 1, 6 ], [ 2, 5 ], [ 3, 4 ] ]

이처럼 간단한 인덱스 연산만으로 배열의 시작과 끝 요소를 손쉽게 쌍으로 묶을 수 있습니다. 이 기법은 회문(palindrome) 검사나 배열 대칭성 확인 등 다양한 상황에서 유용하게 활용할 수 있습니다.