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);
}
}