231222 TIL

chillakilla·2023년 12월 26일

Programmers

행렬의 덧셈

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

입출력 예

솔루션 코드

<script>
function solution(arr1, arr2) {
  let answer = [[]];
  for (let i = 0; i < arr1.length; i++) {
    answer[i] = new Array(arr1[i].length).fill(0);
  }

  for (let i = 0; i < arr1.length; i++) {
    for (let j = 0; j < arr1[i].length; j++) {
      answer[i][j] = arr1[i][j] + arr2[i][j];
    }
  }
  return answer;
}
</script>
  • 반환될 answer의 초기값을 0으로 채워준 뒤
  • for 문을 통해서 주어진 arr1에 존재하는 배열의 갯수만큼 반복시켜준다.
  • 이때, 한 번 더 for 문을 사용, 이번엔 배열 안의 숫자를 반복시켜주고,
  • 입력받은 arr1 의 인덱스와 arr2의 인덱스를 합친 후,
  • 반환될 answer의 인덱스에 그 값을 할당시킨다.

다른 풀이

<script>
function addMatrix(array1, array2) {
  return array1.map((row, i) =>
    row.map((element, j) => element + array2[i][j])
  );
}
</script>

위의 풀이가 너무 둔탁해보여서 다른 풀이 방법이 없을까 고민했고,
map 함수를 이용해 풀이할 수 있다는 걸 알아냈다.

  • arr1의 요소(row)를 반복 시키고,
  • 그 요소(row) 내부의 숫자(element)를 반복시켜 각 배열의 값을 더한다.

profile
꾸준하려 하는 쉽덕놈

0개의 댓글