공부하는 블로그

Baekjoon | Q.2740 - 행렬 곱셈 본문

알고리즘 공부

Baekjoon | Q.2740 - 행렬 곱셈

치킨닮은닭 2020. 6. 4. 00:17
 

2740번: 행렬 곱셈

첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개

www.acmicpc.net

 행렬 곱셈을 하는 간단한 문제이다.

 

import java.util.Scanner;

public class Main {
  static int N;
  static int M;
  static int K;
  static int[][] A;
  static int[][] B;

  public static void main(String[] args) {  
    // 입력
    Scanner sc = new Scanner(System.in);
    N = sc.nextInt();
    M = sc.nextInt();
    A = new int[N][M];
    for (int i = 0; i < N; i++) {
      for (int j = 0; j < M; j++) {
        A[i][j] = sc.nextInt();
      }
    }

    M = sc.nextInt();
    K = sc.nextInt();
    B = new int[M][K];
    for (int i = 0; i < M; i++) {
      for (int j = 0; j < K; j++) {
        B[i][j] = sc.nextInt();
      }
    }

    sc.close();

    StringBuilder sb = new StringBuilder();

    for (int i = 0; i < N; i++) {
      for (int j = 0; j < K; j++) {
        sb.append(mul(i, j) + " ");
      }
      sb.append("\n");
    }

    System.out.println(sb.toString());

  }

  public static int mul(int row, int col) {
    int element = 0;
    for (int i = 0; i < M; i++) {
      element += A[row][i] * B[i][col];
    }

    return element;
  }
}

 간단한 문제로 어려움은 없었다.

Comments