TIL

행열 더하기

devyu0001 2024. 12. 24. 10:05

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.

 

반복문을 사용해서 각각 더하는 것을 시도해 보았다.

function solution(arr1, arr2) {
      let result = [];

    for (let i = 0; i < arr1.length; i++) {
        result[i] = [];
        for (let j = 0; j < arr1[i].length; j++) {
            result[i][j] = arr1[i][j] + arr2[i][j];
        }
    }

    return result;
}

반복문을 두개를 넣다보니 먼가 헷갈리고 이해하는데 한참 걸리고 아직 완전히 이해는 안되는 것 같다...

 

 

또 다른 쉬운 방법도 있었다.

function solution(arr1, arr2) {
    return arr1.map((row, i) => row.map((value, j) => value + arr2[i][j]));
}

map 매서드를 이용하는 방법 인데

  1. 첫 번째 map에서:
    • row는 arr1의 각 행입니다.
      • 첫 번째 순회: row = [1, 2]
      • 두 번째 순회: row = [3, 4]
  2. 두 번째 map에서:
    • value는 row 안의 각 숫자 요소입니다.
      • 첫 번째 행(row = [1, 2])에서는:
        • 첫 번째 순회: value = 1, j = 0
        • 두 번째 순회: value = 2, j = 1
      • 두 번째 행(row = [3, 4])에서는:
        • 첫 번째 순회: value = 3, j = 0
        • 두 번째 순회: value = 4, j = 1

value + arr2[i][j]의 계산:

  • 첫 번째 행(row = [1, 2], i = 0):
    • value = 1, arr2[0][0] = 5 → 1 + 5 = 6
    • value = 2, arr2[0][1] = 6 → 2 + 6 = 8
  • 두 번째 행(row = [3, 4], i = 1):
    • value = 3, arr2[1][0] = 7 → 3 + 7 = 10
    • value = 4, arr2[1][1] = 8 → 4 + 8 = 12

map 매서드로 각 행을 의미하고 내부의 각 요소로 만들고 숫자끼리 더하기 연산으로 결과를 반환한다

 

map 매서드 안에서는 자체적으로 반복을 할 수 있어서 for문 같은 반복문을 사용하지 않아도 마지막에 더하기 연산으로 각각 더할수 있어서 간결한 코드를 만들수있다.

코딩마스터에 길은 멀고도 험하다;;;;;;;

'TIL' 카테고리의 다른 글

TIL은 왜 적어야하는가?!?!?!?!  (2) 2024.12.26
유클리드 호제법  (0) 2024.12.26
Git & Github 기초 뿌시기  (0) 2024.12.23
defer  (1) 2024.12.19
스타벅스 주문 시스템 만들기  (0) 2024.12.18