
길이가 같은 두 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의 길이)
내적을 간단하게 표현하면 두 벡터(Vector)의 방향성을 확인하는 값이다. 결과값이 스칼라(Scalar)로 나오기 때문에 스칼라곱이라고도 한다. 좌표가 주어질 경우 문제에 나와있는 방식으로 계산한다. 문제에서 내적에 대한 계산 방법을 친절하게 알려주었기 때문에 문제 풀이에 대한 어려움은 없었다.
solution1은 arr배열에 a[i]*b[i]를 담아서 각 요소의 합을 리턴했다.
solution2는 sum이라는 변수에 a[i]*b[i]값을 더하여 리턴했다.
solution3은 reduce 메서드를 이용해 바로 결과값을 리턴했다.
// solution1
function solution(a, b) {
let arr = [];
a.forEach((_, i) => {
arr.push(a[i] * b[i]);
});
const answer = arr.reduce((acc, cur) => acc + cur, 0);
console.log(answer);
return answer;
}
// solution2
function solution(a, b) {
let sum = 0;
a.forEach((_, i) => {
sum += a[i] * b[i];
});
return sum;
}
// solution3
function solution(a, b) {
const answer = a.reduce((acc, _, i) => (acc += a[i] * b[i]), 0);
return answer;
}
solution([1, 2, 3, 4], [-3, -1, 0, 2]); // 3