백준 2740번 행렬 곱셈 JAVA

YB·2025년 2월 3일

링크텍스트

설명

C[i][j] = Σ(A[i][k] * B[k][j])를 수행하여 행렬곱셈하였다.
시간복잡도: O(N³), 공간복잡도: O(N²)

코드

import java.util.*;
import java.io.*;

class Main {
	public static void main (String[] args) throws IOException {
	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		StringTokenizer st = new StringTokenizer(br.readLine());

		int An = Integer.parseInt(st.nextToken());
		int Am = Integer.parseInt(st.nextToken());

		int [][] A = new int[An][Am];

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

		st = new StringTokenizer(br.readLine());

		int Bn = Integer.parseInt(st.nextToken());
		int Bm = Integer.parseInt(st.nextToken());

		int [][] B = new int[Bn][Bm];

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

		int [][] C = new int[An][Bm];

		for(int i=0;i<An;i++){
			for(int j=0;j<Bm;j++){
				for(int k=0;k<Am;k++){
					C[i][j] += A[i][k]*B[k][j];
				}
			}
		}
		
		for(int i=0;i<An;i++){
			for(int j=0;j<Bm;j++){
				sb.append(C[i][j]).append(" ");
			}
			sb.append("\n");
		}
		System.out.print(sb);
	}
}

참고 글

https://st-lab.tistory.com/245

profile
안녕하세요

0개의 댓글