#49. [백준_C언어] 2740 : 행렬 곱셈

 

 입력 코드 

#include <stdio.h>

main() {
	int A[102][102], B[102][102];
	int N, M, K;

	scanf("%d %d", &N, &M);
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			scanf("%d", &A[i][j]);
		}
	}

	scanf("%d %d", &M, &K);
	for (int i = 0; i < M; i++) {
		for (int j = 0; j < K; j++) {
			scanf("%d", &B[i][j]);
		}
	}

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < K; j++) {
			int sum = 0;
			for (int p = 0; p < M; p++) {
				sum += A[i][p] * B[p][j];
			}
			printf("%d ", sum);
		}
		printf("\n");
	}
}

 

 

 코드 설명 

#수학 #2차원배열

#include <stdio.h>

main() {
	int A[100][100], B[100][100];
	int AB[10000][10000];
	int N, M, K;

	scanf("%d %d", &N, &M);
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			scanf("%d", &A[i][j]);
		}
	}

	scanf("%d %d", &M, &K);
	for (int i = 0; i < M; i++) {
		for (int j = 0; j < K; j++) {
			scanf("%d", &B[i][j]);
		}
	}

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			for (int k = 0; k < K; k++) {
				AB[i][k] += A[i][j] * B[j][k];
			}
		}
	}
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < K; j++) {
			printf("%d ", AB[i][j]);
		}
		printf("\n");
	}
}

처음에는 한 줄에 한 행을 한 번에 입력받아야 되는데 저렇게 작성해서 에러가 난 것 같았는데 마지막 AB행렬을 만드는 부분에서 에러가 난 것 같다.

#include <stdio.h>

main() {
	int A[102][102], B[102][102];
	int N, M, K;

	scanf("%d %d", &N, &M);
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			scanf("%d", &A[i][j]);
		}
	}

	scanf("%d %d", &M, &K);
	for (int i = 0; i < M; i++) {
		for (int j = 0; j < K; j++) {
			scanf("%d", &B[i][j]);
		}
	}

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < K; j++) {
			int sum = 0;
			for (int p = 0; p < M; p++) {
				sum += A[i][p] * B[p][j];
			}
			printf("%d ", sum);
		}
		printf("\n");
	}
}

 

 

참고한 사이트

wookje.dance/2018/08/28/boj-2740/

 

[BOJ] 2740 : 행렬 곱셈

2740 : 행렬 곱셈 풀이 으갸갸갸갸갸갸가가가각 코드 #include int n, m, k, a[102][102], b[102][102]; int main() { scanf(

wookje.dance

zifmfmphantom.tistory.com/36

 

C언어 행렬의 곱 구하기

3 x 2 행렬과 2 x 3 행렬을 곱한다고 한다면 결과로 3 x 3 행렬이 나오게 됩니다. A x B, B x C에서 처음 행렬의 열(B)과 다음 행렬의 행(B)이 같은 수여야 곱이 가능하며 곱의 결과로 A x C의 행렬이 나오

zifmfmphantom.tistory.com

 

 

 

 문제 출처 

www.acmicpc.net/problem/2740

 

2740번: 행렬 곱셈

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

www.acmicpc.net