[JS 100] 70. 행렬 곱하기

이춘구·2022년 9월 11일
0

js100

목록 보기
19/24

문제

행렬 2개가 주어졌을 때 곱할 수 있는 행렬인지 확인하고 곱할 수 있다면 그 결과를 출력하고,
곱할 수 없다면 -1을 출력하는 프로그램을 만들어주세요.

// 입력
a = [[1, 2], [2, 4]]

b = [[1, 0], [0, 3]]

// 출력
[[1, 6], [2, 12]]

해결 방안

/**
 * 행렬의 곱을 반환하는 함수
 * @param {number[][]} a 첫번째 행렬
 * @param {number[][]} b 두번째 행렬
 * @returns {number[][]} 두 행렬을 곱한 결과
 */
function multiplyMatrix(a, b) {
  const result = [];
  // a의 열의 갯수와 b의 행의 갯수가 같으면 곱셈 가능
  if (a[0].length === b.length) {
    for (let i = 0; i < a.length; i++) {
      console.log("i", i);
      const row = [];
      for (let j = 0; j < b[0].length; j++) {
        console.log("j", j);
        let temp = 0;
        for (let k = 0; k < b.length; k++) {
          console.log("k", k);
          temp += a[i][k] * b[k][j];
          console.log(`a[${i}][${k}]`, a[i][k], `b[${k}][${j}]`, b[k][j]);
        }
        row.push(temp);
      }
      result.push(row);
    }
    return result;
  } else return -1;
}

const a = [
  [1, 2, 3],
  [4, 5, 6],
];
const b = [
  [1, 2],
  [3, 4],
  [5, 6],
];

const result = multiplyMatrix(a, b);
console.log(result);
profile
프런트엔드 개발자

0개의 댓글