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

자바스크립트로 배열의 처음과 끝에서 특정 요소 서로 교환하기

숫자로 이루어진 배열과 하나의 숫자(예: n, 반드시 배열의 길이보다 작거나 같아야 함)를 인수로 받는 자바스크립트 함수를 작성해야 합니다. 이 함수는 배열의 앞쪽에서 k번째 요소뒤쪽에서 k번째 요소를 서로 맞바꾸는 역할을 수행합니다.

예제

다음은 해당 기능을 구현한 코드입니다 −

const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

const swapNth = (arr, k) => {
   const { length: l } = arr;
   const ind = k - 1;
   let temp = arr[ind];
   arr[ind] = arr[l - k];
   arr[l - k] = temp;
};

swapNth(arr, 4);
console.log(arr);

swapNth(arr, 8);
console.log(arr);

출력

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

[
   0, 1, 2, 6, 4,
   5, 3, 7, 8, 9
]
[
   0, 1, 7, 6, 4,
   5, 3, 2, 8, 9
]

동작 원리

함수의 동작 과정을 단계별로 살펴보면 다음과 같습니다.

1. 배열 길이 확인: 구조 분해 할당을 통해 배열의 전체 길이를 변수 l에 저장합니다.

2. 인덱스 계산: 앞쪽에서 k번째 요소의 인덱스는 k - 1이고, 뒤쪽에서 k번째 요소의 인덱스는 length - k입니다.

3. 값 교환: 임시 변수(temp)를 활용해 두 위치의 값을 안전하게 서로 맞바꿉니다.

예를 들어, 배열 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]에서 k가 4일 경우 앞쪽 네 번째 요소인 3과 뒤쪽 네 번째 요소인 6이 서로 교환되어 [0, 1, 2, 6, 4, 5, 3, 7, 8, 9]가 됩니다. 이후 k가 8로 호출되면 앞쪽 여덟 번째 요소인 7과 뒤쪽 여덟 번째 요소인 2가 교환됩니다.

이 방식은 시간 복잡도 O(1)로 두 요소만 직접 교환하므로 매우 효율적이며, 원본 배열을 그대로 수정(in-place)한다는 특징이 있습니다.