본문 바로가기
알고리즘/프로그래머스

[프로그래머스] 행렬의 곱셉 c++

by 오오오니 2022. 12. 2.

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

 

프로그래머스

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

programmers.co.kr

행렬곱셈하는 법을 까먹어서 검색했다.

또한 벡터에 메모리가 할당되어 있지 않다면

v[0][1]=1;이런식으로 데이터를 넣지 못하고

v.push_back(1); 이렇게 넣어줘야 한다는 점을 간과했다.

비주얼 스튜디오에 의존하다 보니까 아무기능도 없을 때 기초가 부족한 것이 티가 나는 것 같다.

2차원 벡터에 메모리 주소만 할당 되고 메모리가 할당되지 않아서

1차원 벡터에 값을 저장해주고 answer에 1차원벡터를 넣는 방식으로 풀었다.

#include <string>
#include <vector>
#include<iostream>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    vector<vector<int>> answer;
    vector<int>v;
    
    int w=arr2[0].size();//가로 사이즈
    int h=arr1.size();//세로 사이즈
    int k=arr2.size();
  
    int temp=0;
    for(int i=0;i<h;i++)
    {    vector<int>v;
        for(int j=0;j<w;j++)
        {
            for(int m=0;m<k;m++)    
            {
                temp+=arr1[i][m]*arr2[m][j];
              
            } 
            v.push_back(temp);
            
             temp=0;
            
        }
          answer.push_back(v);
    }
 
    return answer;
}