[프로그래머스] 내적 - JavaScript

coderH·2022년 4월 6일
1

프로그래머스코테

목록 보기
10/27
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 이하입니다.

입출력 예

abresult
[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배열의 첫번째인덱스값을 초기값으로 받습니다.

0개의 댓글