행렬 2개가 주어졌을 때 곱할 수 있는 행렬인지 확인하고 곱할 수 있다면 그 결과를 출력하고,
곱할 수 없다면 -1을 출력하는 프로그램을 만들어주세요.
/**
* 행렬 2개가 곱연산이 가능한지 판단하는 함수
* @param {Number[]} matrix1
* @param {Number[]} matrix2
* @returns {Boolean} 곱연산이 가능하다면 true, 불가능하다면 false 리턴
*/
function isMultiplyPossible(matrix1, matrix2) {
const [matrix1_row, matrix1_col] = [matrix1.length, matrix1[0].length];
const [matrix2_row, matrix2_col] = [matrix2.length, matrix2[0].length];
if (matrix1_row === matrix2_col && matrix1_col === matrix2_row) return true;
return false;
}
/**
* 행렬 2개를 곱해서 결과를 출력하는 함수
* @param {Number} matrix1
* @param {Number} matrix2
*/
function printMultiply(matrix1, matrix2) {
let result = [];
for (let i = 0; i < matrix1.length; i++) {
let row = [];
for (let j = 0; j < matrix2[0].length; j++) {
let tmp = 0;
for (let k = 0; k < matrix2[0].length; k++) {
tmp += matrix1[i][k] * matrix2[k][j];
}
row.push(tmp);
}
result.push(row);
}
console.log(result);
}
function solution(matrix1, matrix2) {
if (isMultiplyPossible(matrix1, matrix2)) printMultiply(matrix1, matrix2);
else console.log(-1);
}
const a = [
[1, 2],
[2, 4],
];
const b = [
[1, 0],
[0, 3],
];
solution(a, b);
'PS > 제코베 JS 100제' 카테고리의 다른 글
제코베 JS 100제 / 72 / 너비 우선 탐색 (0) | 2022.09.13 |
---|---|
제코베 JS 100제 / 71 / 깊이 우선 탐색 (0) | 2022.09.13 |
제코베 JS 100제 / 69 / 골드바흐의 추측 (0) | 2022.09.09 |
제코베 JS 100제 / 68 / 버스 시간표 (0) | 2022.09.08 |