본문 바로가기

Dev/Algorithm

알고리즘 문제 | 프로그래머스 | JS - 내적

반응형

 

풀이

 

우선, 내적이 뭔지 검색해봤는데 바로 껐다^^호헤호ㅔ허허ㅔㅎ

 

입출력 예를 보면

첫번째 배열의 첫번째 두번째 배열의 첫번째를 곱한 값과

첫번째 배열의 두번째 두번째 배열의 두번째를 곱한 값을 더하는걸 반복한다.

 

따라서,

function solution(a, b) {
    var answer = 1234567890;
    var myArr = [];
    
    for(let i=0; i<a.length; i++) {
        for(let j=0; j<b.length; j++) {
            
            if(i==j) {
                myArr.push(a[i]*b[j]);
            }
        }
    }
    
    answer = myArr.reduce((a,b) => (a+b));
    
    return answer;
}

두개의 배열을 전부 곱하는 대신 i와 j가 같을 때만 push 후 reduce를 통해서 배열의 값을 전부 더했다.

 

지금보니까 좀 멀리 돌아온거 같은데..

 

 

다른 사람 풀이를 보자

function solution(a, b) {
    return a.reduce((acc, _, i) => acc += a[i] * b[i], 0);
}
arr.reduce(callback[, initialValue])

 

callback 함수에 accumulator, currentValue, currentIndexOptional, array Optional을 사용할 수 있다...

 

MDN이 최고다 증말루..

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

 

Array.prototype.reduce() - JavaScript | MDN

reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다.

developer.mozilla.org

 

풀이 2.

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

아.. 어쩐지..... 뭐한거지 ............................

복잡하게 생각하지 말자ㅏㅏㅏㅏ!!

 

반응형