Notice
Recent Posts
Recent Comments
Link
궤도
[백준] 2740번 : 행렬 곱셈 본문
문제
풀이
시도때도 없이 바뀌는 교육정책과 교육과정에서 손해를 보는건 결국 학생들인데...
그런 학생들 중에서는 행렬을 배우지 못한 나같은 사람도 있다. 우리 학년부터 행렬을 배우지 않았다고 말하면 내 나이가 들통나겠지만 뭐...별로 신경쓰지 않겠다.
아무튼 행렬을 배우지 않은 나는 행렬의 곱셈 문제가 나올 때마다 구글링을 해야하는 처지가 됐는데...
행렬의 곱셈을 정리하면 이렇게 된다.
행렬 A와 B를 곱할때 A 행렬은 행을 기준으로 나누고, B 행렬은 열을 기준으로 나눈다.
그리고 각 행과 열에 맞춰 곱하고 더하면 된다...
인터넷엔 행렬을 배운 훌륭한 선생님들이 많으니 그 분들을 찾아가는게 나을 것 같다.
소스코드
#include <iostream>
using namespace std;
int matrixA[100][100];
int matrixB[100][100];
int result[100][100];
int main() {
int N, M, K;
cin >> N >> M;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++)
cin >> matrixA[i][j];
}
cin >> M >> K;
for (int i = 0; i < M; i++) {
for (int j = 0; j < K; j++)
cin >> matrixB[i][j];
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < K; j++) {
for (int k = 0; k < M; k++) {
result[i][j] += (matrixA[i][k] * matrixB[k][j]);
}
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < K; j++)
cout << result[i][j] << ' ';
cout << '\n';
}
}
그래서 소스코드는 이렇게 간단하다.
사실 이 문제는 다음 문제를 위한 빌드업이었다.
Comments