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에 인덱스를 너무 활용을 안하다 보니, 이런 쉬운 로직을 생각 못한거 같다.