(Lv. 1) 내적 (문제 링크)
길이가 같은 두 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의 길이)
function solution(a, b) {
let answer = 1234567890;
answer = a.reduce((acc, cur, idx) => (acc += cur * b[idx]), 0);
return answer;
}
function solution1(a, b) {
let answer = 1234567890;
let sum = 0;
for (let i = 0; i < a.length; i++) {
sum += a[i] * b[i];
}
answer = sum;
return answer;
}
매개변수: 콜백(callback) 함수, 초기값(option)
동작 과정
콜백(callback) 함수의 매개변수
콜백 함수를 사용할 때는, 해당 매개변수를 사용하지 않더라도,
반드시 (accumulator, currentValue, currentIndex, array) 순서로 매개변수를 입력해야 한다.function (accumulator, currentValue, currentIndex, array) { return accumulator + currentValue; }
answer = a.reduce((acc, cur, idx) => (acc += cur * b[idx]), 0);
순서 | 콜백 함수 |
---|---|
첫번째 | 0 += a[0]*b[0] |
두번째 | a[0]*b[0] += a[1]*b[1] |
세번째 | a[0]*b[0] + a[1]*b[1] += a[2]*b[2] |
... | ... |
n번째 | a[0]*b[0] + ... + a[n-2]*b[n-2] += a[n-1]*b[n-1] |