Java

[백준 2740] 행렬 곱셈 (JAVA)

iheeeee6-6 2023. 3. 12. 13:12
728x90

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

 

2740번: 행렬 곱셈

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

www.acmicpc.net

 

삼중포문으로 행렬의 곱셈을 나타낼 수 있다.

첫 포문은 첫 행렬의 행을 나타내고

두번째 포문은 두번째 행렬의 열을 나타내고,

세번째 포문은 첫 행렬의 열, 두번째 행렬의 행을 나타낸다!

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int n = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());
		long[][] arr = new long[n][m];

		for (int i = 0; i < n; i++) {
			st = new StringTokenizer(br.readLine());
			for (int j = 0; j < m; j++) {
				arr[i][j] = Integer.parseInt(st.nextToken());
			}
		}

		st = new StringTokenizer(br.readLine());
		int M = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());
		long[][] arr2 = new long[M][K];

		for (int i = 0; i < M; i++) {
			st = new StringTokenizer(br.readLine());
			for (int j = 0; j < K; j++) {
				arr2[i][j] = Integer.parseInt(st.nextToken());
			}
		}

		StringBuilder sb = new StringBuilder();
		for (int u = 0; u < n; u++) {
			for (int i = 0; i < K; i++) {
				long result = 0;
				for (int z = 0; z < m; z++) {
					result += arr[u][z] * arr2[z][i];
				}
				sb.append(result).append(" ");
			}
			sb.append("\n");
		}

		System.out.println(sb);
	}

}

'Java' 카테고리의 다른 글

[백준 1406] 에디터 (JAVA)  (0) 2023.03.19
[백준 1629] 곱셈 (JAVA)  (0) 2023.03.12
[백준 10830] 행렬 제곱(JAVA)  (0) 2023.03.12
[백준 1474] 밑 줄 (JAVA)  (0) 2023.03.09
[백준 11659] 구간 합 구하기 4 (JAVA)  (0) 2023.03.09