[프로그래머스/C++]Lv.2 - 행렬의 곱셈

YH J·2023년 9월 19일
0

프로그래머스

목록 보기
148/168

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12949

내 풀이

for문을 썼다. arr1의 행을 탐색할 for문
arr2의 원소 하나의 열을 탐색할 for문
arr1의 원소 하나의 열과 arr2의 행을 탐색할 for문을 합쳤다.

내 코드

#include <string>
#include <vector>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    vector<vector<int>> answer;
    
    // i 는 arr1의 행 탐색
    for(int i = 0; i < arr1.size(); i++)
    {
        vector<int> sums;
        // j 는 arr2[0]의 열 탐색
        for(int j = 0; j < arr2[0].size(); j++)
        {
            int sum = 0;
            // k는 arr1[0]의 열, arr2의 행
            for(int k = 0; k < arr1[0].size(); k++)
            {
                sum += arr1[i][k] * arr2[k][j];
            }
            sums.push_back(sum);
        }
        answer.push_back(sums);
    }
    
    return answer;
}

다른 사람의 풀이

#include <vector>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    vector<vector<int>> answer;
    
    for(int i=0; i<arr1.size(); i++){
        vector<int> v;
        for(int j=0; j<arr2[0].size(); j++){
            int sum = 0;
            for(int k=0; k<arr1[0].size(); k++){
                sum += arr1[i][k] * arr2[k][j];
            }
            v.push_back(sum);
        }
        answer.push_back(v);
    }
    
    return answer;
}

다른 사람의 풀이 해석

같다.

profile
게임 개발자 지망생

0개의 댓글