알고리즘/프로그래머스 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 라이브러리를 따로 설치해서 사용하는 방법이 있다고 한다.