알고리즘

프로그래머스 Level 1 - 내적 (Javascript)

또롱또 2022. 5. 14. 10:09
728x90

https://programmers.co.kr/learn/courses/30/lessons/70128

function solution(a, b) {
    var answer = 1234567890;

    // 두 배열을 곱해진 값을 담아둘 임시변수
    let temp = 0;
    // 최종적으로 합을 담을 변수
    let sum = 0;
    
    // a,b의 길이는 같기때문에 a만쓴다.
    for(let i=0; i<a.length; ++i){
        temp = a[i] * b[i]
        sum = sum + temp;
    }
    
    // answer = 1234567890이기때문에 sum으로 변경
    answer = sum
    
    return answer;
}

나는 평범하게 각 배열의 인덱스에 for 문으로 도달해서 끝냈다.

생각해보니 map도 있고, reduce도 있는데, 아직 for문이 제일먼저 떠오르게 된다.

 

정답코드는 역시 map으로 풀어냈다.

해석하자면, acc에 계속 a[i] * b[*]값이 쌓여서 최종적인 값을 뱉어내게 된다

두번째 인덱스는 배열이 두개가 들어가게 되어서 안쓰게 된건가 하고 추측만해봤다.

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