[백준(Baekjoon)][자바(java)] 2740 : 행렬 곱셈 / 분할 정복

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.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
        
		int n = sc.nextInt(), m = sc.nextInt(), k, i, j, l;
		int a[][] = new int[n][m];
		for( i = 0; i < n; i++ )
			for( j = 0; j < m; j++ )
				a[i][j] = sc.nextInt();
                
		m = sc.nextInt(); k = sc.nextInt();
		int b[][] = new int[m][k];
		for( i = 0; i < m; i++ )
			for( j = 0; j < k; j++ )
				b[i][j] = sc.nextInt();
                
		sc.close();
                
		int r[][] = new int[n][k];
		for( i = 0; i < n; i++ ) 
			for( j = 0; j < k; j++ ) 
				for( l = 0; l < m; l++ )
					r[i][j] += a[i][l] * b[l][j];

		for( i = 0; i < n; i++ ) {
			for( j = 0; j < k; j++ )
				System.out.print( r[i][j] + " " );
			System.out.println();
		}
	}
}

( 코드 참고 : http://www.ktword.co.kr/abbr_view.php?m_temp1=5286 )

 

 

 

반응형