[프로그래머스] 내적

JINSUNG LEE·2021년 7월 3일
0
post-thumbnail


function solution(a, b) {
    // 홀수 짝수 나눠서 푼다.
    // 홀수 곱 짝수를
    // 새로운 배열에 저장
    // 배열을 reduce로 더하기
    
  	// a, b 저장
    let arr = [];
  
    // a, b 배열 요소를 통해 a는 홀수, b는 짝수로 구분
    for (let i = 0; i < a.length; i++) {
        arr.push(a[i], b[i])

    }
    
  	// 저장된 arr 배열의 각각 곱하는 결과 초기값
    let sum = 0;
  	// 곱한 결과 저장
    let result = [];
  	// x가 짝수 y가 홀수
    let x, y
    
    
    for (let i = 0; i < arr.length; i++) {
        
        if (i % 2 === 0) {
            x = arr[i]         
        } else {
            y = arr[i]
            sum = x * y
            result.push(sum)
        }    
    }
    // 최종 종합
    let sumTotal = 0
    
    // 곱한 결과의 배열요소 더하기
    result.reduce((x, y) => {
        sumTotal = sumTotal + y
    }, 0)
    

    return sumTotal    
}



입출력 예시를 보자마자 바로 로직이 계산 되었다.

아! 이건 홀수 짝수 구분 짓어서 배열 push 하여 담아 놓자.

역시나 담아서 진행해보니 쉽게 풀었다.


모범 답안



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

?????????????????

이거 reduce 한줄로 구현할 수 있었어...?

코드를 분석해보니 reduce로 3번째 요소는 인덱스를 활용하여

acc 종합값 + (a * b) 공식으로 값을 도출시켰다.

reduce에 인덱스를 너무 활용을 안하다 보니, 이런 쉬운 로직을 생각 못한거 같다.

profile
https://californialuv.github.io/Tech_Blog 이사 갔어용 🌎 🚀

0개의 댓글