728x90
아래는 각 언어별로 **두 개의 2차원 배열(행렬)**이 주어졌을 때 **행렬의 곱(Matrix Multiplication)**을 구현한 예제입니다.
✅ 전제 조건
- 행렬 A: 크기 m x n
- 행렬 B: 크기 n x p
- 결과 행렬 C: 크기 m x p
조건: A의 열 수 == B의 행 수여야 행렬 곱이 가능합니다.
🔹 C
#include <stdio.h>
void multiplyMatrices(int A[3][2], int B[2][4], int C[3][4]) {
// A: 3x2, B: 2x4, C: 3x4
for (int i = 0; i < 3; i++) { // 행
for (int j = 0; j < 4; j++) { // 열
C[i][j] = 0;
for (int k = 0; k < 2; k++) { // A의 열 == B의 행
C[i][j] += A[i][k] * B[k][j];
}
}
}
}
🔹 C++
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> multiplyMatrices(const vector<vector<int>>& A, const vector<vector<int>>& B) {
int m = A.size(), n = A[0].size(), p = B[0].size();
vector<vector<int>> C(m, vector<int>(p, 0));
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
for (int k = 0; k < n; k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
return C;
}
🔹 C#
int[,] MultiplyMatrices(int[,] A, int[,] B) {
int m = A.GetLength(0), n = A.GetLength(1), p = B.GetLength(1);
int[,] C = new int[m, p];
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
for (int k = 0; k < n; k++) {
C[i, j] += A[i, k] * B[k, j];
}
}
}
return C;
}
🔹 Java
public int[][] multiplyMatrices(int[][] A, int[][] B) {
int m = A.length, n = A[0].length, p = B[0].length;
int[][] C = new int[m][p];
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
for (int k = 0; k < n; k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
return C;
}
🔹 JavaScript
function multiplyMatrices(A, B) {
const m = A.length, n = A[0].length, p = B[0].length;
const C = Array.from({ length: m }, () => Array(p).fill(0));
for (let i = 0; i < m; i++) {
for (let j = 0; j < p; j++) {
for (let k = 0; k < n; k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
return C;
}
🔹 Python
def multiply_matrices(A, B):
m, n, p = len(A), len(A[0]), len(B[0])
C = [[0 for _ in range(p)] for _ in range(m)]
for i in range(m):
for j in range(p):
for k in range(n):
C[i][j] += A[i][k] * B[k][j]
return C
✔️ 테스트 예시 (A: 2x3, B: 3x2)
A = [
[1, 2, 3],
[4, 5, 6]
]
B = [
[7, 8],
[9, 10],
[11, 12]
]
결과:
[
[58, 64],
[139, 154]
]
'TIP' 카테고리의 다른 글
게임화면 크기 설정 (1) | 2025.04.07 |
---|---|
플렛폼이란 (0) | 2025.04.03 |
유저 인증 - OAuth2 (0) | 2025.03.24 |
연결된 포트 끊기 (0) | 2025.03.10 |
깃헙 기본 브릿지 바꾸기 (0) | 2025.02.12 |