본문 바로가기
BOJ

[BOJ] 2740번 - 행렬 곱셈

by 곰제비 2022. 6. 14.

<접근 방식>

단순 수학, 구현 문제이다.

행렬의 곱셈을 코드화할 수 있다면 쉽게 풀 수 있다.

res[i][j] += A[i][k] * B[k][j]; 이 부분이 행렬의 곱셈을 구현한 부분이다. 

<전체 코드>

#include <iostream>
#include <vector>
#include <stack>
using namespace std;

int N, M, K;
int A[101][101];
int B[101][101];
int res[101][101];
int main()
{
	cin.tie(0);
	ios_base::sync_with_stdio(false);
	
	cin >> N >> M;
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++)
			cin >> A[i][j];
	}
	
	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 k = 0; k < M; k++) {
				res[i][j] += A[i][k] * B[k][j];
			}
			cout << res[i][j] << " ";
		}
		cout << "\n";
	}
}

<문제 링크>

https://www.acmicpc.net/problem/2740

 

2740번: 행렬 곱셈

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

www.acmicpc.net

 

'BOJ' 카테고리의 다른 글

[BOJ] 3460번 - 이진수  (0) 2022.06.14
[BOJ] 2501번 - 약수 구하기  (0) 2022.06.14
[BOJ] 17298번 - 오큰수  (0) 2022.06.14
[BOJ] 2493번 - 탑  (0) 2022.06.14
[BOJ] 1874번 - 스택 수열  (0) 2022.06.13