ใ€ŒโŒจ๏ธแด„sใ€PS/๋ฐฑ์ค€_์ˆ˜ํ•™&๊ตฌํ˜„

[Baekjoon/๋ฐฑ์ค€][2740][C/C++] ํ–‰๋ ฌ ๊ณฑ์…ˆ

๋ฃจ๋ฐ€๐•ƒ๐•ฆ๐•„๐•š๐•ฃ 2023. 5. 5. 12:21
728x90
๋ฐ˜์‘ํ˜•
ใ€Ž๋ชฉ์ฐจใ€
0. ๊ฐœ์š”

1. ๋ฌธ์ œ
2. ํ’€์ด
3. ์ฝ”๋“œ

0. ๊ฐœ์š”

์ˆ˜ํ•™, ๊ตฌํ˜„, ์„ ํ˜•๋Œ€์ˆ˜ํ•™ ๋ฌธ์ œ. ํ–‰๋ ฌ๊ณฑ์˜ ์›๋ฆฌ์— ๋Œ€ํ•ด ์•Œ๊ณ ์žˆ์–ด์•ผ๋งŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.

1. ๋ฌธ์ œ

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

 

2740๋ฒˆ: ํ–‰๋ ฌ ๊ณฑ์…ˆ

์ฒซ์งธ ์ค„์— ํ–‰๋ ฌ A์˜ ํฌ๊ธฐ N ๊ณผ M์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ํ–‰๋ ฌ A์˜ ์›์†Œ M๊ฐœ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„์—๋Š” ํ–‰๋ ฌ B์˜ ํฌ๊ธฐ M๊ณผ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด์–ด์„œ M๊ฐœ์˜ ์ค„์— ํ–‰๋ ฌ B์˜ ์›์†Œ K๊ฐœ

www.acmicpc.net

[๋ฌธ์ œ]

N*Mํฌ๊ธฐ์˜ ํ–‰๋ ฌ A์™€ M*Kํฌ๊ธฐ์˜ ํ–‰๋ ฌ B๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋‘ ํ–‰๋ ฌ์„ ๊ณฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

[์ž…๋ ฅ]

์ฒซ์งธ ์ค„์— ํ–‰๋ ฌ A์˜ ํฌ๊ธฐ N ๊ณผ M์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ํ–‰๋ ฌ A์˜ ์›์†Œ M๊ฐœ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„์—๋Š” ํ–‰๋ ฌ B์˜ ํฌ๊ธฐ M๊ณผ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด์–ด์„œ M๊ฐœ์˜ ์ค„์— ํ–‰๋ ฌ B์˜ ์›์†Œ K๊ฐœ๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. N๊ณผ M, ๊ทธ๋ฆฌ๊ณ  K๋Š” 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๊ณ , ํ–‰๋ ฌ์˜ ์›์†Œ๋Š” ์ ˆ๋Œ“๊ฐ’์ด 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๋‹ค.

[์ถœ๋ ฅ]

์ฒซ์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ํ–‰๋ ฌ A์™€ B๋ฅผ ๊ณฑํ•œ ํ–‰๋ ฌ์„ ์ถœ๋ ฅํ•œ๋‹ค. ํ–‰๋ ฌ์˜ ๊ฐ ์›์†Œ๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

[์˜ˆ์ œ ์ž…๋ ฅ 1]

3 2
1 2
3 4
5 6
2 3
-1 -2 0
0 0 3

[์˜ˆ์ œ ์ถœ๋ ฅ 1]

-1 -2 6
-3 -6 12
-5 -10 18
๋ฐ˜์‘ํ˜•

2. ํ’€์ด

[Baekjoon/๋ฐฑ์ค€][2740][C/C++] ํ–‰๋ ฌ ๊ณฑ์…ˆ
[Baekjoon/๋ฐฑ์ค€][2740][C/C++] ํ–‰๋ ฌ ๊ณฑ์…ˆ

ํ–‰๋ ฌ๊ณฑ์˜ ์›๋ฆฌ๋Š” ์œ„์™€ ๊ฐ™๋‹ค. 3์ค‘ for๋ฌธ์„ ํ†ตํ•ด NxM ํ–‰๋ ฌ๊ณผ MxK ํ–‰๋ ฌ์˜ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

3. ์ฝ”๋“œ

#include <iostream>
using namespace std;

int mat1[100][100] = {};
int mat2[100][100] = {};

int main(int argc, char* argv[]) {
	/* Faster */
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	/* Init */
	int n, m, k;

	/* Mat1 */
	cin >> n >> m;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			cin >> mat1[i][j];

	/* Mat2 */
	cin >> m >> k;
	for (int i = 0; i < m; i++)
		for (int j = 0; j < k; j++)
			cin >> mat2[i][j];

	/* Output */
	for (int _n = 0; _n < n; _n++) {
		for (int _k = 0; _k < k; _k++) {
			int mul = 0;

			for (int _m = 0; _m < m; _m++)
				mul += mat1[_n][_m] * mat2[_m][_k];

			cout << mul << ' ';
		}
		cout << '\n';
	}
		
	/* Return */
	return 0;
}
728x90
๋ฐ˜์‘ํ˜•