행렬 곱셈의 조건인 행렬 arr1의 행과 arr2의 열 개수가 같아야 한다. 즉 곱으로 나올 행렬은 int[arr1.GetLength(0), arr2.GetLength(1)] 이다.
제한조건에서 곱할 수 있는 배열만 주어진다고 했으니 따로 if문으로 검증할 필요는 없다.
행렬 하나의 성분을 구하기 위해 arr1의 열의 개수만큼 반복해야하고 또한 전체 행렬을 돌기위해 2중 반복문이 필요해 총 3중 for문으로 해결한다.
public int[,] 행렬의곱셈(int[,] arr1, int[,] arr2)
{
int row = arr1.GetLength(0);
int col = arr2.GetLength(1);
int[,] answer = new int[row, col];
for (int i = 0; i < row; i++)
{
for(int j = 0; j < col; j++)
{
for (int k = 0; k < arr1.GetLength(1); k++)
{
int x = arr1[i, k];
int y = arr2[k, j];
answer[i, j] += x * y;
}
}
}
return answer;
}