알고리즘/프로그래머스 2단계

프로그래머스 - 행렬의 곱셈 - C++

게임만드는학생 2024. 8. 6. 13:59

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

 

프로그래머스

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

programmers.co.kr

 

#include <string>
#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> a;
        for(int j=0;j<arr2[0].size();j++)
        {
            // 만들어질 행렬의 한 원소
            // i = 행 , j = 열, answer[i][j]
            int sum = 0;
            for(int k=0;k<arr2.size();k++)
                sum+=arr1[i][k]*arr2[k][j];
            a.push_back(sum);
        }
        answer.push_back(a);
    }
    
    return answer;
}

 

행렬 곱셈인데 3중 for문을 사용해 구현했다. 

첫번째 행렬의 i 행에 대해서 두번째 행렬의 j열의 수들을 곱한다. 수들이 몇번째인지는 k로 계산한다. 

 

chat gpt한테 물어보니 3중 for문 말고 다른 대안은 Eigen 라이브러리를 따로 설치해서 사용하는 방법이 있다고 한다.