알고리즘 내적

.·2021년 7월 8일

문제 설명

길이가 같은 두 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) {
//     var answer = 0
//     for(let i=0;i<a.length;i++){
//         answer+=a[i]*b[i]
//     }
//     return answer
// }

for 문을 돌면서 같은 index끼리 곱한것을 답에 누적해 주었다.

더 간결한 코드

function solution(a,b) {
 return a.reduce((acc,cur,index)=>acc+cur*b[index],0)
}
  1. reduce는 배열 쭉 돌면서 return 하는 값은 acc에 누적되고 최종적으로는 하나의 값을 return 한다.
  • 여기선 acc+cur*b[index]가 return되서 다음 요소돌 때 acc가 된다
  1. 인자는 누적값, 현재처리할요소, 인덱스, reduce를 호출한 배열을 가질 수 있다
  2. 만약 초기값을 0으로 세팅해 주지않으면 첫번째 배열의 요소가 acc로 설정 된다.
  3. 이경우에는 0으로 꼭 세팅해 줘야 원하는 결과값을 가질 수 있다.
profile
Divde & Conquer

0개의 댓글