인프런 커뮤니티 질문&답변
11:52초 행렬 곱하기, 인터넷 찾아보고 해결했습니다.
해결된 질문
작성
·
355
3
<참고한 자료>
https://stackoverflow.com/questions/32974263/2x2-matrix-multiplication
근데 남의 꺼 따라한 거 같고 제가 한 거 같지 않아서 찝찝하네요 ㅠㅠ. 규칙 찾다가 3중 루프에는 접근했었는데 중간에 꼬여서 포기했었거든요.
거의 반나절 걸렸네요 ㅠㅠ.
<code>
for (int row = 0; row < 2; ++row)
{
for (int col = 0; col < 2; ++col)
{
for (int k = 0; k < 2; ++k)
{
m3[row][col] += m1[row][k] * m2[k][col];
}
}
cout << endl;
}
<output>
PS C:\coding\tbc_review\TBCPP\Chapter6> g++ .\matrixByMatrix.cpp
PS C:\coding\tbc_review\TBCPP\Chapter6> .\a.exe
19 22
43 50
<전체코드>
#include <iostream>
using namespace std;
int main()
{
int m1[2][2]
{
{1, 2},
{3, 4},
};
int m2[2][2]
{
{5, 6},
{7, 8},
};
int m3[2][2] = {0};
// int m3[2][2] = {{1,2},{3,4}};
// m3[0][0] = m1[0][0] * m2[0][0] + m1[0][1] * m2[1][0];
// m3[0][1] = m1[0][0] * m2[0][1] + m1[0][1] * m2[1][1];
// m3[1][0] = m1[1][0] * m2[0][0] + m1[1][1] * m2[1][0];
// m3[1][1] = m1[1][0] * m2[0][1] + m1[1][1] * m2[1][1];
// int sum = 0;
for (int row = 0; row < 2; ++row)
{
for (int col = 0; col < 2; ++col)
{
for (int k = 0; k < 2; ++k)
{
m3[row][col] += m1[row][k] * m2[k][col];
}
}
cout << endl;
}
// cout << multiplyTemp1 << " ";
// cout << endl;
/*
m3 = [00, 01]
[10, 11]
*
*/
for (int row = 0; row < 2; ++row)
{
for (int col = 0; col < 2; ++col)
{
cout << m3[row][col] << '\t';
}
cout << endl;
}
// for (int i = 0; i < 2; ++i)
// {
// for (int j = 0; j < 2; ++j)
// {
// // {1, 2} {5, 6}
// // {3, 4} {7, 8}
// m3[i][j] = m1[i][j] * m2[j][i] + m1[i][j + 1] * m2[j + 1][i];
// cout << m3[i][j] << "\t";
// }
// cout << endl;
// }
return 0;
}





