https://programmers.co.kr/learn/courses/30/lessons/12950
const arr1 = [[1,2],[2,3]]
const arr2 = [[3,4],[5,6]]
function solution(arr1, arr2) {
let answer = [[]];
for(let i = 0; i < arr1.length; i++){
answer[i] = [];
for(let j = 0; j < arr1[i].length; j++){
answer[i].push(arr1[i][j] + arr2[i][j])
}
}
return answer;
}
console.log(solution(arr1,arr2)); // [[4,6],[7,9]]
- 배열안의 원소가 배열이기때문에 중첩 for문을 활용한다.
- answer 변수안에 배열의 원소를 빈 배열로 할당한다. 문제 중 배열이 [[]]로 선언되어있기 때문에 빈 배열을 할당해주어야 오류를 피할 수 있다. 아래 연산에 들어갈 배열 원소의 배열들을 push로 여기에 추가하는 것이다.
- 중첩 for문안에 push와 연산을 활용하여 연산된 값을 넣어준다. push되는 위치가 answer이 아닌 answer[i]인 이유는 출력값이 각각의 배열로 나뉘어 있어야 하기 때문이다. answer[i]가 아닌 answer로 더한 값을 전달할 시 출력값은 [4,6,7,9]이 된다.
const arr1 = [[1,2],[2,3]]
const arr2 = [[3,4],[5,6]]
function solution(arr1, arr2) {
return arr1.map((arr, i) => arr.map((n, j) => n + arr2[i][j]));
}
console.log(solution(arr1,arr2)); // [[4,6],[7,9]]
- arr1 의 배열을 수정하기 위해 arr1.map()을 사용한다. arr1.map(arr, i)의 요소값과 인덱스값이 들어가는데 요소값인 arr은 [[1,2],[2,3]]를 가르킨다.
- 두번째로 arr1.map(arr, i)의 인자값 arr에 map을 중첩으로 사용한다. 이유는 배열안의 배열을 연산해야하기때문에 중첩으로 사용 후 연산값을 넣어준다. arr.map과 같이 넣어주는데 여기서 arr이 [[1,2],[2,3]]의 배열 중 [1,2]혹은[2,3]을 가르키게 된다.
- arr.map을 가르키는 요소값 n에 arr2[i][j]를 더해준다.