이번 글에서는 숫자 배열과 하나의 숫자 k(k는 배열의 길이보다 작거나 같아야 함)를 인자로 받는 JavaScript 함수를 작성해 보겠습니다.
이 함수의 역할은 배열의 앞에서부터 k번째 요소와 뒤에서부터 k번째 요소를 서로 맞바꾸는 것입니다.
동작 원리
배열의 길이를 l이라고 할 때, 배열 인덱스는 0부터 시작하므로 다음과 같이 정리할 수 있습니다.
- 앞에서 k번째 요소의 인덱스:
k - 1 - 뒤에서 k번째 요소의 인덱스:
l - k
임시 변수(temp)를 활용해 두 위치의 값을 안전하게 교환하면 됩니다.
예제 코드
다음은 해당 기능을 구현한 코드입니다 −
const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
const swapKth = (arr, k) => {
const { length: l } = arr;
let temp;
const ind = k-1;
temp = arr[ind];
arr[ind] = arr[l-k];
arr[l-k] = temp;
};
swapKth(arr, 4);
console.log(arr);
swapKth(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 ]
위 실행 예제에서 k가 4일 때는 값 3(인덱스 3)과 값 6(인덱스 6)이 서로 교체되었고, 이어서 k가 8로 호출되면 값 2(인덱스 7)와 값 7(인덱스 2)이 교체된 것을 확인할 수 있습니다.