직접
수정합니다.function solution(arr1, arr2) {
return arr1.map((a,i) => a.map((b,j) => b + arr2[i][j]))
}
리스트 안에 리스트가 있을 때는 이중 map()을 써서 각 원소를 접근하는게 참 편했다.
첫번째 map()으로 가장 큰 리스트를 풀어서 작은 리스트에 접근해, 작은 리스트를 해당하는 인자에 또 map()으로 접근해 작은 리스트의 인자를 접근할 수 있는 형식이다.
행렬이나 내적과 같은 복잡한 연산에서 유용하게 쓰였던 메서드였던거 같다.
function solution(arr1, arr2) {
return arr1.map((a,i) => a*arr2[i]).reduce((a,b)=>a+b)
}
Reduce() 함수
배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환한다.
- reduce()에는 누산기가 포함, 배열의 각 요소에 대해 함수를 실행
- 누적된 값을 출력할 때 용이
const arr2 = [1, 2, 3, 4, 5]; const result2 = arr2.reduce((acc, cur, idx) => { return acc += cur; }, 10); console.log(result2); // 25
초기값인 initialValue값 설정할 수 있다.
REF : reduce와 함께 object spread를 사용하는 것이 나쁜 생각인 이유
https://prateeksurana.me/blog/why-using-object-spread-with-reduce-bad-idea/
const arr = [ { id: 'ironman', name: 'Tony Stark'}, { id: 'hulk', name: 'Bruce Banner'}, { id: 'blackwidow', name: 'Natasha Romanoff'}, ] const superheroes = arr.reduce( (acc, item) => ({ ...acc, [item.id]: [item.name], }), {} );
- reduce루프는 배열에 대해 n번 실행(n은 배열의 항목 수).
그리고 여기에는 기존 스프레드 연산자와 함께 보이지 않는 내부 루프가 있다.- 내부 루프가 모든 반복에서 n을 2 번 실행하기 때문에 O(n^2)라 말할 수 있다.(정확하진 않음)
...그렇게 난 완주하지 못한 선수가 되었다...ㄸㄹㄹ 내일은 꼭 풀어버려야지.
https://school.programmers.co.kr/learn/courses/30/lessons/42576