(Lv. 1) 행렬의 덧셈 (문제 링크)
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더하는 것이다.
2개의 행렬 arr1과 arr2가 주어졌을 때, 두 행렬의 덧셈 결과를 return하는 solution 함수를 완성하라.
function solution(arr1, arr2) {
let answer = [[]];
for (let i = 0; i < arr1.length; i++) {
if (!answer[i]) answer.push([]);
for (let j = 0; j < arr1[0].length; j++) {
answer[i].push(arr1[i][j] + arr2[i][j]);
}
}
return answer;
}
function solution1(arr1, arr2) {
let answer = [[]];
for (let i = 0; i < arr1.length; i++) {
for (let j = 0; j < arr1[0].length; j++) {
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}
return answer;
}
문제점
: TypeError: Cannot set properties of undefined (setting '0')
원인
: 현재 answer는 answer[0]
부분만 초기화가 되어 있고, answer[1]
이후의 부분은 초기화되어있지 않다.
해결 방법
: answer[1]
이후의 부분이 존재하지 않는지 확인하여 존재하지 않으면 빈 배열 []
로 초기화한다.
if (!answer[i]) answer.push([]); // 또는 if(answer[i] === undefined) answer.push([]);
// AS-IS
answer[i][j] = arr1[i][j] + arr2[i][j];
// TO-BE
answer[i].push(arr1[i][j] + arr2[i][j];