개발아 담하자

[프로그래머스/C++] 행렬의 곱셈 풀이 본문

👩‍💻 알고리즘 풀이/프로그래머스

[프로그래머스/C++] 행렬의 곱셈 풀이

choidam 2020. 4. 22. 01:35

프로그래머스 : 행렬의 곱셈

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12949

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제

2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.

 

제한 조건

행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.

행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.

곱할 수 있는 배열만 주어집니다.


곱셈으로 인해 생성되는 행렬의 크기는 첫 번째 행렬의 행, 두 번째 행렬의 열의 크기만 하다.

행렬의 곱셈은 3중 for문을 기억해두자..!

 

풀이

#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;
}

 

풀이 인증