프론트엔드✏️/코드캠프

알고리즘 - reduce

당근먹는하니 2022. 5. 31. 22:34
728x90
반응형

  a와 b 내적하기

길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다.
a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.

이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)

 

내적이란 말 오랜만이당 ..ㅎ ㅎㅈㅅ에서 했었는데 ...

 

// 푼 과정
function solution(a, b) {
    var answer = 0;
  for(let i = 0; i < a.length; ++i){
    console.log(a[i]*b[i])
    // 누적해
    answer += a[i]*b[i];
  }
    return answer;
}

누적한다는 걸 보니까 reduce로 풀고 싶어졌다.

 

 function solution(a,b) {
 	var answer = 0;
 	answer = a.reduce((acc,_,i)=>acc += a[i]*b[i], 0);
    // acc 누적값, (처리 할 현재 요소), 인덱스 => 콜백함수, 콜백함수의 첫번째 인자
    return answer;
}

리듀서 함수의 네 가지 인자

  1. 누산기 (acc)
  2. 현재 값 (cur)
  3. 현재 인덱스 (idx)
  4. 원본 배열 (src)

return 문에서 바로 return 해도 될 것 같다. 

 

 

function findIndex(callback, arr) {
    // 여기에 코드를 작성하세요
    for(let i = 0; i < arr.length; ++i) {
      if(callback(arr[i])) return i
      else continue;
    } return -1 // 와..^_^
}
    
 findIndex(function( data ) { return data % 2 === 0 }, [1, 3, 5, 4, 9, 10])

findIndex(function( data ) { return data % 2 === 0 },
[1, 3, 5, 7, 9])

이거 뭔가 풀고 뿌듯했다^^.. . 저 for문 뒤에 무심한 return -1 이 ,,, 너무 마음에 든다구~~~~~~~~~

728x90
반응형