프로그래머스 Lv.2 코딩테스트

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

하다블 2022. 6. 23. 18:10
반응형

문제는 다음과 같습니다.

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

 

코딩테스트 연습 - 행렬의 곱셈

[[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]]

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> tmp;
		for (int j{0}; j < arr2[0].size(); j++)
		{
			int value{0};
			for (int k {0}; k < arr1[0].size(); k++)
				value += arr1[i][k] * arr2[k][j];	
			tmp.push_back(value);
		}
		answer.push_back(tmp);
	}
	return answer;
}

각 행을 하나의 벡터로 처리하여 정리했으며 vector<vector<int>>로 해석하기 어렵다면 이차원 배열을 생각하면 조금 더 쉽게 문제를 해결할 수 있습니다.

반응형