알고리즘/분할정복(Divide and conquer)

[백준 2740] - [행렬]- 행렬 곱셈

팡스 2018. 11. 28. 16:39

문제 링크 : https://www.acmicpc.net/problem/2740




이 문제는 행렬의 곱을 계산하면 되는 문제다. 


음 이문제는 너무 수학이라 어떻게 셜명을 해야할지 모르겠다.


그냥 풀자.


소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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 row1 = Integer.parseInt(st.nextToken());
        int col1 = Integer.parseInt(st.nextToken());
        
        int[][] binArr1 = new int[row1][col1];
        
        for(int i=0; i < row1; i++) {
            st = new StringTokenizer(br.readLine());
            for(int j=0; j < col1; j++) {
                binArr1[i][j] = Integer.parseInt(st.nextToken());
            }
        }
        
        st = new StringTokenizer(br.readLine());
        int row2 = Integer.parseInt(st.nextToken());
        int col2 = Integer.parseInt(st.nextToken());
        
        int[][] binArr2 = new int[row2][col2];
        for(int i=0; i < row2; i++) {
            st = new StringTokenizer(br.readLine());
            for(int j=0; j < col2; j++) {
                binArr2[i][j] = Integer.parseInt(st.nextToken());
            }
        }
        
        for(int i=0; i < row1; i++) {
            for(int j=0; j < col2; j++) {
                int sum = 0;
                for(int k=0; k < col1; k++) {
                    sum += binArr1[i][k] * binArr2[k][j];
                }
                
                System.out.print(sum + " ");
            }
            System.out.println("");
        }
        
    }
}
cs