프로그래머스 레벨 2 테스트 문제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) 
{
 
    int arr1Row = arr1.size();
    int arr1Col = arr1[0].size();
    int arr2Row = arr2.size();
    int arr2Col = arr2[0].size();
 
    vector<vector<int>> answer(arr1Row, vector<int>(arr2Col));
 
    int temp  = 0;
 
       for(int i = 0; i < arr1Row; ++i) //행 이동
    {
        for(int j = 0; j < arr2Col; ++j) //열 이동
        {
            temp = 0;
 
            for(int k = 0; k < arr1Col; ++k) //행렬 1 열 이동, 행렬 2 행 이동 및 연산
            {
                temp += arr1[i][k] * arr2[k][j];
            }
            //행렬의 곱을 정답 행렬에 입력
            answer[i][j] = temp;
        }
    }
 
    return answer;
}
 
 

의사코드

1. 두 행렬의 사이즈를 구한다.

2. 1행렬의 행과 2행렬의 열로 정답 행렬을 Reserve 한다.

3. 3중 For문으로 계산해서 답을 넣는다.

 - 3for문 행렬 1의 열 이동, 행렬 2의 행 이동과 연산을 처리

 - 2for문 행렬 2의 열 이동

 - 1for문 행렬 1의 행 이동

+ Recent posts