길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다.
a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.
이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1]
입니다. (n은 a, b의 길이)
제한사항
a, b의 길이는 1 이상 1,000 이하입니다.
a, b의 모든 수는 -1,000 이상 1,000 이하입니다.
a | b | result |
---|---|---|
[1,2,3,4] | [-3,-1,0,2] | 3 |
[-1,0,1] | [1,0,-1] | -2 |
function solution(a, b) {
let result = 0;
for (let i = 0; i < a.length; i++) {
result += a[i] * b[i];
}
return result;
}
내적은 두 개의 배열에서 같은 인덱스에 있는 요소를 곱하고 그 결과를 모두 더한 값입니다.
그래서 for문을 통해 2개의 배열의 같은 인덱스 요소에 접근하여 곱하고 result
변수에 해당 값을 누적시켰습니다.
function solution(a, b) {
return a.reduce((prev, curr, index) => prev + (curr * b[index]), 0)
}
값을 누적하는 특징이 있어 배열의 reduce메소드를 통해서도 구현할 수 있습니다.
누적값, 현재값, index 3가지를 매개변수로 받고 b[index]
를 통해 배열 b의 같은 위치에 있는 요소에 접근하여 curr
과 곱합니다.
마지막에 있는 0은 reduce 메소드 실행시에 최초 값이며 꼭 지정해주어야 합니다.
지정하지 않으면 a배열의 첫번째인덱스값을 초기값으로 받습니다.