문제
문제 풀이
행렬 곱셈을 할 줄 안다면 정말 쉽게 풀 수 있다.
행렬 곱셈은 기본적으로 왼쪽 행렬의 행과 오른쪽 행렬의 열을 곱하고 더하는 것이다.
그래서
1행 1열 = 1행 X 1열 1행 2열 = 1행 X 2열
2행 1열 = 2행 X 1열 2행 2열 = 2행 X 2열
이런식으로 계산한다.
예제를 직접 손으로 풀어본다면
이러한 형태가 된다.
이러한 풀이방식 그대로 코딩을 하면 된다.
전체 코드
#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int N, M, K;
int input_1[101][101] = {0,};
int input_2[101][101] = {0,};
cin >> N >> M;
for(register int i = 1; i <= N; i++){
for(register int j = 1; j <= M; j++){
cin >> input_1[i][j];
}
}
cin >> M >> K;
for(register int i = 1; i <= M; i++){
for(register int j = 1; j <= K; j++){
cin >> input_2[i][j];
}
}
int result[101][101] = {0,};
for(register int i = 1; i <= N; i++){
for(register int j = 1; j <= K; j++){
for(register int k = 1; k <= M; k++){
result[i][j] += input_1[i][k] * input_2[k][j];
}
cout << result[i][j] << ' ';
}
cout << '\n';
}
return 0;
}
'알고리즘 > 백준' 카테고리의 다른 글
백준 11723번 (집합) c++ (0) | 2023.02.15 |
---|---|
백준 9655번 (돌 게임) c++ (0) | 2022.12.27 |
백준 2581번 (소수) c++ (0) | 2022.12.25 |
백준 1676번 (팩토리얼 0의 개수) c++ (0) | 2022.12.25 |
백준 1427번 (소트인사이드) c++ (0) | 2022.12.24 |
댓글