arr1 + arr2
(00 01),(02 03) + (00 01),(02 03)
[[1,2] ,[2,3]] + [[3,4] ,[5,6]]
n번 째 행렬의 2번째 요소는 어떻게 접근해야할까?
=> 행렬은 아래와 같은 식이므로 이중 for문 사용하기
(a11 a12 a13)
(a21 a22 a23)
(a31 a32 a33)
function solution(arr1, arr2) {
for (i = 0; i < arr1.length; i++) {
if (arr1.length > 1) {
for (j = 0; j < arr1.length; j++) {
arr1[i][j] += arr2[i][j];
}
} else arr1[i] += arr2[j];
}
return arr1;
}
이렇게 되면 테스트 2번에 걸리게 된다.
왜?🤨 if로 길이제한까지 주었는데?
내가 잘못 이해한 거 같으니 각 arr의 길이를 재보자.
아니나다를까 arr1 과 arr2의 길이가 같다.
0번째 idx에 숫자가 2개 들어가 있다고 arr의 길이가 4인 줄 이해하고 있었다.
if문의 조건을 바꿔본다: if (arr1[i][j]!==null)
❌
=> if문 삭제.
두 번째 for문이 돌아가는 조건을 수정해본다. ⭕
function solution(arr1, arr2) {
for (i = 0; i < arr1.length; i++) {
for (j = 0; j < arr1[i].length; j++) {
arr1[i][j] += arr2[i][j];
}
}
return arr1;
}
배열의 길이만큼이 아닌 배열안의 요소 길이만큼으로 수정해주었다.
이해가 안가서 손으로 직접 디버깅을 해보니 눈에 보여서 그런지 이해가 된다. 시간은 오래 잡아먹히지만 for문이 헷갈릴 때 왕왕 해봐야겠다.