[프로그래머스] 내적

개발잘하기프로젝트·2020년 11월 20일
0
post-thumbnail

🤔 문제

프로그래머스 - 내적(월간 코드 챌린지 시즌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의 길이)

❗️ 제한

  • a, b의 길이는 1 이상 1,000 이하입니다.
  • a, b의 모든 수는 -1,000 이상 1,000 이하입니다.

💡 접근

내적을 간단하게 표현하면 두 벡터(Vector)의 방향성을 확인하는 값이다. 결과값이 스칼라(Scalar)로 나오기 때문에 스칼라곱이라고도 한다. 좌표가 주어질 경우 문제에 나와있는 방식으로 계산한다. 문제에서 내적에 대한 계산 방법을 친절하게 알려주었기 때문에 문제 풀이에 대한 어려움은 없었다.

solution1arr배열에 a[i]*b[i]를 담아서 각 요소의 합을 리턴했다.
solution2sum이라는 변수에 a[i]*b[i]값을 더하여 리턴했다.
solution3reduce 메서드를 이용해 바로 결과값을 리턴했다.

🧑🏻‍💻 코드

// solution1
function solution(a, b) {
  let arr = [];
  a.forEach((_, i) => {
    arr.push(a[i] * b[i]);
  });
  const answer = arr.reduce((acc, cur) => acc + cur, 0);
  console.log(answer);
  return answer;
}

// solution2
function solution(a, b) {
  let sum = 0;
  a.forEach((_, i) => {
    sum += a[i] * b[i];
  });
  return sum;
}

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

solution([1, 2, 3, 4], [-3, -1, 0, 2]); // 3

📝 참고

wikipedia - 스칼라곱

profile
🏠 ☕️ 🎞 🌿 + 🧑🏻‍💻

0개의 댓글