길이가 같은 두 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 |
---|---|
[1,2,3,4] | [-3,-1,0,2] |
[-1,0,1] | [1,0,-1] |
입출력 예 #1
a와 b의 내적은 1(-3) + 2(-1) + 30 + 42 = 3 입니다.
입출력 예 #2
a와 b의 내적은 (-1)1 + 00 + 1*(-1) = -2 입니다.
function solution(a, b) {
let sum = 0;
for(i = 0; i < a.length; i++){
sum += a[i] * b[i]
}
return sum;
}
reduce()
함수를 쓸 수 없을 듯 해서 간단한 반복문으로 풀어 주었다.
function solution(a, b) {
return a.reduce((acc, _, i) => acc += a[i] * b[i], 0);
}
배열이 a, b 두 개 있어서 reduce()
함수를 쓸 수 없을 것이라고 생각했다. 왜냐하면 한쪽 배열만 반복될 것이기 때문이다. 그런데 배열 자체의 값을 이용하는게 아니라 배열의 인덱스를 이용하는 것이라서 결과값이 나오는 듯 하다.
function solution(a, b) {
var answer = a.reduce((acc, cur, idx) => acc += cur*b[idx], 0)
return answer;
}
인수를 3개 받아와서 한 쪽은 배열 a의 값을 이용하고, 곱해주는 수는 인덱스를 이용하여 b의 값을 가져와줄 수도 있다.