내적(Javascript)

·2022년 9월 18일
0
post-thumbnail

길이가 같은 두 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 이하입니다.

입출력 예

ab
[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()함수를 쓸 수 없을 듯 해서 간단한 반복문으로 풀어 주었다.

참고할 풀이 1

function solution(a, b) {
    return a.reduce((acc, _, i) => acc += a[i] * b[i], 0);
}

배열이 a, b 두 개 있어서 reduce()함수를 쓸 수 없을 것이라고 생각했다. 왜냐하면 한쪽 배열만 반복될 것이기 때문이다. 그런데 배열 자체의 값을 이용하는게 아니라 배열의 인덱스를 이용하는 것이라서 결과값이 나오는 듯 하다.

참고할 풀이 2

function solution(a, b) {
    var answer = a.reduce((acc, cur, idx) => acc += cur*b[idx], 0)
    return answer;
}

인수를 3개 받아와서 한 쪽은 배열 a의 값을 이용하고, 곱해주는 수는 인덱스를 이용하여 b의 값을 가져와줄 수도 있다.

profile
전 이것도 몰라요

0개의 댓글

관련 채용 정보