프로그래머스 코딩테스트 연습 level 1 '두 개 뽑아서 더하기
- for문 이용하기
- reduce() 함수 이용하기
function solution(a, b) {
var answer = 0;
for (var i = 0; i <a.length; i++){
answer += a[i] * b[i];
}
return answer;
}
result = solution([1,2,3,4], [-3,-1,0,2])
console.log(result);
function solution(a, b) {
// a.reduce(함수, 초기값)
// cur: 배열의 현재 요소
var answer = a.reduce((accumulator, cur,i) =>
(accumulator += cur * b[i]), 0)
return answer;
}
첫번째 방법은 간단하다. 단순히 for문을 이용하여 a, b에 있는 인덱스를 각각 꺼내와 곱한것을 answer에 더했다.
var answer = a.reduce((accumulator, cur,i) =>
(accumulator += cur * b[i]), 0)
reduce함수는 배열을 돌면서 이전의 콜백함수의 리턴값을 받아서 사용할 수 있다는게 map과같은 다른 함수들과의 차이점이다.
구조는
배열.reduce( callback(리턴값, 배열의 현재요소, 인덱스), 리턴값의 초기값 )
으로 되어있다.
따라서 위 코드에서는 a의 배열을 하나씩 돌면서 accumulator라는 리턴값에 배열의 현재 요소(a[i])와 b[i]를 더한 것을 answer에 넣고 리턴시켰다.(사실 바로 리턴문에 넣어도 된다,)