[Java] 백준 2740 행렬 곱셈

Lee GaEun·2025년 1월 27일

[Java] 알고리즘

목록 보기
51/93

2740 행렬 곱셈 문제 링크

문제


#1

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

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

        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[][] answer = new int[aN][bM];
        for(int i=0; i<aN; i++) {
            for(int j=0; j<bM; j++) {
                for(int k=0; k<bN; k++) {
                    answer[i][j] += A[i][k] * B[k][j];
                }
                System.out.print(answer[i][j] + " ");
            }
            System.out.println();
        }

        bw.flush();
        bw.close();
    }
}

  • 배열 두개를 받아오는 부분 때문에 코드가 길어짐
  • 로직 자체는 그냥 행렬 곱셈을 하는 것 뿐이라,, 고려할 거 자체가 별로 없음..
  • 그냥 행렬 곱셈을 하는 방법의 수학적 공식만 알면 풀림
  • 성공!
profile
I will give it my all (๑•̀o•́๑)ง

0개의 댓글