[TIL] 행렬의 덧셈

최하온·2024년 1월 31일
0

TIL

목록 보기
28/71

🚨Issue occuring


💦What I tried


	  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인 줄 이해하고 있었다.

🤔

  1. if문의 조건을 바꿔본다: if (arr1[i][j]!==null)
    => if문 삭제.

  2. 두 번째 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;
}

💡How solve issue


디버깅

배열의 길이만큼이 아닌 배열안의 요소 길이만큼으로 수정해주었다.

📃What I learned


🤔Realization


이해가 안가서 손으로 직접 디버깅을 해보니 눈에 보여서 그런지 이해가 된다. 시간은 오래 잡아먹히지만 for문이 헷갈릴 때 왕왕 해봐야겠다.

0개의 댓글