문제 개요
숫자로 구성된 배열을 입력받는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열 안에서 인접한 두 숫자를 곱했을 때 얻을 수 있는 최댓값(최대 곱)을 찾아 반환해야 합니다.
예제 코드
다음은 이 문제를 해결하는 전체 코드입니다 −
const arr = [9, 5, 10, 2, 24, -1, -48];
function adjacentElementsProduct(array) {
let maxProduct = array[0] * array[1];
for (let i = 1; i < array.length - 1; i++) {
const product = array[i] * array[i + 1];
if (product > maxProduct) {
maxProduct = product;
}
}
return maxProduct;
}
console.log(adjacentElementsProduct(arr));
출력 결과
50
코드 동작 원리
- 초기화: 배열의 첫 번째 요소와 두 번째 요소의 곱(
array[0] * array[1])을 초기 최댓값으로 설정합니다. - 순회: 반복문을 통해 배열을 탐색하면서 각 위치에서 인접한 두 요소의 곱을 계산합니다.
- 비교 및 갱신: 새로 계산한 곱이 기존 최댓값보다 크면 최댓값을 갱신합니다.
- 반환: 모든 탐색이 끝나면 최종적으로 구해진 최대 곱을 반환합니다.
예제 분석
입력 배열 [9, 5, 10, 2, 24, -1, -48]에서 인접한 요소들의 곱을 하나씩 계산해 보면 다음과 같습니다.
- 9 × 5 = 45
- 5 × 10 = 50 (최댓값)
- 10 × 2 = 20
- 2 × 24 = 48
- 24 × (-1) = -24
- -1 × (-48) = 48
따라서 최종 결과는 50이 됩니다.
시간 복잡도
이 알고리즘은 배열을 한 번만 순회하므로 시간 복잡도는 O(n)이며, 추가 메모리를 거의 사용하지 않아 공간 복잡도 역시 O(1)로 매우 효율적입니다.