[코드테스트]내적
내적
문제설명
길이가 같은 두 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 | result |
---|---|---|
[1,2,3,4] | [-3,-1,0,2] | 3 |
[-1,0,1] | [1,0,-1] | -2 |
입출력 예 설명 |
---|
a와 b의 내적은 1 * (-3) + 2 * (-1) + 3 * 0 + 4 * 2 = 3 입니다. |
a와 b의 내적은 (-1) * 1 + 0 * 0 + 1 * (-1) = -2 입니다. |
풀이
내적이란 서로 다른 두 힘의 벡터 값을 연산하는 것을 말한다.
내적의 정의 보러가기
엄밀히 말하면 위의 두 매개변수를 받는 것은 내적이라고 할 수 는 없지만(벡터의 값과 내각이 없음) 그 외의 수를 모두 생략하고 매개변수 a, b만 남은 것이라고 생각하면 되겟다.
입력 받는 매개변수와 관계를 보면 같은 index끼리 곱하고 곱한 결과를 다 더한 값이 결과로 나오는 것을 알 수 있다.
만약 a의 배열이 [1,2,3] b의 배열이 [4,5,6]이라고 할 때 문제에서 구하고자 하는 내각의 result는 (1*4)+(2*5)+(3*6) = 32가 된다.
위와 같이 두 배열을 단순한 곱셈을 하는 것이라면 reduce를 활용하여 배열의 수를 더하여 줄여나가는 방식이 효율적이다.
let a = [1,2,3];
let b = [4,5,6];
function solution(a, b) {
//a배열을 reduce하고 reduce의 매개변수는 이전값, 현재값, index로 받는다.
//3개의 매개변수를 받아 이전 값에 현재값을 b배열과 각각 곱하여 더한다. 그리고 index는 0부터 시작한다.ㅣ
let answer=a.reduce((acc, val, i)=>acc+(val*b[i]),0);
// answer에 값이 담기면 이 결과를 return 시킨다.
return answer;
}
//함수를 실행한다.
solution(a,b)
Author And Source
이 문제에 관하여([코드테스트]내적), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@km2535/코드테스트내적저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)