이번 글에서는 양수와 음수가 섞여 있는 배열을 입력받아, 각 요소의 부호를 제자리에서 반전시키는 JavaScript 함수를 작성해 보겠습니다. 즉, 양수는 같은 크기의 음수로, 음수는 같은 크기의 양수로 변환하는 것입니다.
접근 방법
배열의 각 요소에 -1을 곱하면 부호가 반전됩니다. 이때 원본 배열 자체를 수정하는 '제자리(in-place)' 방식으로 처리할 수도 있고, 새로운 배열을 반환하는 방식으로 처리할 수도 있습니다.
먼저 forEach()를 사용해 원본 배열을 직접 수정하는 방법을 살펴보겠습니다.
예제 코드
const arr = [12, 5, 3, -1, 54, -43, -2, 34, -1, 4, -4];
const changeSign = arr => {
arr.forEach((el, ind) => {
arr[ind] *= -1;
});
};
changeSign(arr);
console.log(arr);출력 결과
콘솔에는 다음과 같은 결과가 출력됩니다.
[
-12, -5, -3, 1, -54,
43, 2, -34, 1, -4,
4
]대체 방법: map() 활용
원본 배열을 변경하지 않고 새로운 배열을 만들고 싶다면 map() 메서드를 사용하는 것이 더 깔끔합니다.
const arr = [12, 5, 3, -1, 54, -43, -2, 34, -1, 4, -4]; const newArr = arr.map(num => -num); console.log(newArr); // [-12, -5, -3, 1, -54, 43, 2, -34, 1, -4, 4]
정리: 배열의 모든 요소 부호를 반전하려면 각 요소에 -1을 곱하면 됩니다. 원본 배열을 유지해야 한다면 map()을, 메모리 효율을 위해 제자리 수정이 필요하다면 forEach()를 사용하는 것이 좋습니다.