[Programmers]내적

이묘·2022년 7월 12일
0

CodingTest

목록 보기
3/41
post-thumbnail

프로그래머스 코딩테스트 연습 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에 넣고 리턴시켰다.(사실 바로 리턴문에 넣어도 된다,)

profile
본질을 공부해야 응용도 하지 않을까

0개의 댓글

Powered by GraphCDN, the GraphQL CDN