[코테] 내적 - 두 개의 배열 안의 요소를 곱해서 더해주기

JulyK9·2023년 1월 2일
0

문제

길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어지는데,
a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.

제출코드

function solution(a, b) {
    let result = 0
    for(let i = 0; i < a.length; i++) {
      result = result + a[i]*b[i]
    }
  return result
}

접근과정

  • 처음엔 forEach, map, reduce 같은 것들을 이용해보려고 했으나 하나의 배열에 메서드를 써주는 방식으로 어떻게 각 배열안의 요소를 곱해줄 수 있을지 시간이 필요하다고 생각되어 일단 for문으로 구현

다른 풀이 1.

function solution(a, b) {
    return a.reduce((acc, _, i) => acc += a[i] * b[i], 0);
}
  • 역시 reduce를 사용하여 풀어냈다
  • reduce의 4개의 매개변수에 대해 잘 이해하고 있어야겠다.
  • a배열을 기준으로 reduce 메서드를 적용해주면서 콜백함수에서 적용할 연산을 작성할 때 b배열에 대한 값을 가져와서 작성해주면 되는구나
  • 2번째 매개변수를 언더바로 작성한 것은 중요한 매개변수라 아니라 저렇게 작성하는 것이라하고 실제 연산부에서도 사용되지 않았다는 걸 알수 있다.

다른 풀이 2.

function solution(a, b) {
    let answer = a.reduce((acc, cur, idx) => acc += cur*b[idx], 0)
    return answer;
}
  • 이 방식도 같은 로직인데 a배열의 요소들을 처리할 현재요소인 2번째 매개변수를 이용해서 표현했고, 위에서는 처리할 요소인 2번째 매개변수를 언더바로 놓고 연산 부분에서 직접 표현해주었다.

참고자료

profile
느리지만 꾸준하게. 부족하거나 잘못된 부분은 알려주시면 감사하겠습니다.

0개의 댓글