📍문제 링크
https://www.acmicpc.net/problem/2740
2740번: 행렬 곱셈
첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개
www.acmicpc.net
📍알고리즘 분류
- 수학
- 구현
- 선형대수학
📍문제 풀이
- N*M 행렬과 M*K 행렬의 곱셈을 출력하라
- 행렬 곱셈 공식
이를 구현하면 된다
📍코드 (JavaScript)
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const input = [];
// 행렬간 곱셈 함수
const multiply = (mat1, mat2, n, m, k) => {
const result = Array.from({ length: n }, (_) => []);
for (let i = 0; i < n; i++) {
for (let j = 0; j < k; j++) {
result[i][j] = 0;
for (let k = 0; k < m; k++) {
result[i][j] += mat1[i][k] * mat2[k][j];
}
}
}
return result;
};
rl.on("line", (line) => {
input.push(line);
}).on("close", () => {
const [N, M] = input[0].split(" ").map(Number);
const matrixA = input
.slice(1, N + 1)
.map((row) => row.split(" ").map(Number));
const K = +input[N + 1].split(" ")[1];
const matrixB = input.slice(N + 2).map((row) => row.split(" ").map(Number));
console.log(
multiply(matrixA, matrixB, N, M, K)
.map((row) => row.join(" "))
.join("\n"),
);
});