코딩/프로그래머스 코딩테스트

[프로그래머스] 내적

민쯔 2021. 9. 24. 14:49
728x90
반응형

안녕하세요. 민쯔입니다.😊

이번에 내적 문제 해결방안에 대해 설명하겠습니다.

이번 문제는 정말 쉬운 편에 속해서 빠르게 풀었습니다.

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

저는 for문을 이용해서 풀었습니다.

문제 설명에 a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이) 라고 되어 있습니다.

for(let i = 0; i < a.length; i++)

  • a 배열의 길이만큼 for문을 반복한다.
  • a배열과 b배열은 같으므로 b.length를 써도 상관이 없다.

answer += a[i] * b[i];

  • a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 임으로 값을 누적시키기 위해 +=을 사용한다.

 

저는 이렇게 풀었는데 다들 reduce를 사용하더라고요.

저도 reduce를 쓸까 했는데... 두배열을 더할 수 있나?? 이런 생각이 들어서 안 했는데

제가 그냥 reduce를 잘 몰라서 안 쓴 것 같아요😂 공부를 해야겠어요.

function solution(a, b) {    
    return a.reduce((acc, cur, idx) => acc += a[idx] * b[idx], 0);
}

return a.reduce((acc, cur, idx) => acc += a[idx] * b[idx], 0);

  • acc : 누산기
  • cur : 현재 값
    • , 0이 초기값을 나타내므로 이 reduce에서는 처음의 현재 값이 0 임으로 0으로 0부터 시작
  • idx :  현재 인덱스
728x90
반응형