[프로그래머스] 행렬의 곱셈

klean·2021년 1월 26일
0

프로그래머스 레벨2

목록 보기
11/13

문제 설명

행렬이 2개 주어집니다. 두 행렬의 곱 결과 행렬을 구하세요

아이디어

그냥 행렬 푸는 방법대로 반복문을 사용했다.

코드 cpp

#include <string>
#include <vector>

using namespace std;

int calc_line(vector<vector<int>> &arr1, vector<vector<int>> &arr2,int a, int b,int m){
    int res=0;
    for(int i =0;i<m;i++){
        res+=arr1[a][i]*arr2[i][b];
    }
    return res;
}

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    vector<vector<int>> answer;
    int n = arr1.size(),m=arr2.size(),r=arr2[0].size();
    for(int i = 0;i<n;i++){
        answer.push_back(vector<int>());
    }
    for(int i = 0;i<n;i++){
        for(int j = 0;j<r;j++){
            answer[i].push_back(calc_line(arr1,arr2,i,j,m));
        }
    }
    
    return answer;
}

코드 python

def calc_line(arr1,arr2,i,j,m):
    ret =0
    for ctr in range(m):
        ret+=arr1[i][ctr]*arr2[ctr][j]
    return ret

def solution(arr1, arr2):
    n = len(arr1)
    m = len(arr2)
    r = len(arr2[0])
    
    answer = [[] for i in range(n)]
    print(answer)
    for i in range(n):
        for j in range(r):
            answer[i].append(calc_line(arr1,arr2,i,j,m))
    return answer

0개의 댓글