본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 2740번: 행렬 곱셈 [C++]

문제 출처: https://www.acmicpc.net/problem/2740

 

2740번: 행렬 곱셈

첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개

www.acmicpc.net

1. 코드

#include <iostream>

using namespace std;

int main(void)
{
	int n, m, k;
	int a[101][101], b[101][101], r[101][101] = { 0, };

	//행렬 a입력
	cin >> n >> m;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			cin >> a[i][j];

	//행렬 b입력
	cin >> m >> k;
	for (int i = 0; i < m; i++)
		for (int j = 0; j < k; j++)
			cin >> b[i][j];

	//행렬의 곱 실행
	for (int i = 0; i < n; i++)
		for (int j = 0; j < k; j++)
			for (int u = 0; u < m; u++)
				r[i][j] += a[i][u] * b[u][j];

	//출력
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < k; j++)
			cout << r[i][j] << " ";
		cout << endl;
	}
}

(실행)

이산 수학을 공부 중이라 삼중 반복문을 통해 쉽게 해결할 수 있었다.