문제 풀기/C#

88. 행렬의 곱셈

kagan-draca 2025. 3. 11. 14:01

 

기본 틀 : 

using System;

public class Solution {
    public int[,] solution(int[,] arr1, int[,] arr2) {
        int[,] answer = new int[,] {{}};
        return answer;
    }
}

 

문제를 보고 내장 함수를 사용할까? 2중 반복문으로는 풀 수 없을까?

 

진짜 3중 반복문 써야하나? answer이라는 변수를 사용 안 하는 방법은 없나?

 

등등 여러가지 생각을 하다보니 머리 속이 복잡해졌다...

 

그렇게 복잡해진 머리로 3중 반복문에 answer를 사용해서 문제를 풀려고 시도하니 

 

각각의 배열의 index에 i, j, k 뭘 넣어줘야 하는지 더 헷갈리기 시작했다...

 

그래서,

 

위와 같이 머리를 정리한 후 코드를 작성하여 문제를 해결할 수 있었다...

 

using System;

public class Solution {
    public int[,] solution(int[,] arr1, int[,] arr2) {
        
        int[,] answer = new int[arr1.GetLength(0),arr2.GetLength(1)];
        
        for(int i = 0; i < arr1.GetLength(0); i++)
        {
            for(int j = 0; j < arr1.GetLength(1); j++)
            {
                for(int k = 0; k < arr2.GetLength(1); k++)
                {
                    answer[i,k] += arr1[i,j] * arr2[j,k];
                }
            }
        }
        
        return answer;
    }
}