inblog logo
|
LHS's Study Space
    알고리즘문제풀기C#

    [알고리즘 문제 풀기] 행렬 곱셈(2740)

    C#
    lhs's avatar
    lhs
    Jan 15, 2025
    [알고리즘 문제 풀기] 행렬 곱셈(2740)
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리
    www.acmicpc.net
    https://www.acmicpc.net/problem/2740
    notion image

    1. 문제 풀이 아이디어

    • 삼중 반복문을 사용해 행렬 곱셈을 수행하여 문제를 해결할 수 있다.

    2. 나의 정답 코드

    StreamReader sr = new(Console.OpenStandardInput()); StreamWriter sw = new(Console.OpenStandardOutput()); string[] split = sr.ReadLine().Split(); int an = int.Parse(split[0]); int am = int.Parse(split[1]); int[,] a = new int[an, am]; for (int i = 0; i < an; i++) { split = sr.ReadLine().Split(); for (int j = 0; j < am; j++) { a[i, j] = int.Parse(split[j]); } } split = sr.ReadLine().Split(); int bn = int.Parse(split[0]); int bm = int.Parse(split[1]); int[,] b = new int[bn, bm]; for (int i = 0; i < bn; i++) { split = sr.ReadLine().Split(); for (int j = 0; j < bm; j++) { b[i, j] = int.Parse(split[j]); } } int[,] result = 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++) { result[i, j] += a[i, k] * b[k, j]; } sw.Write($"{result[i, j]} "); } sw.WriteLine(); } sr.Close(); sw.Close();

    3. 정리

    • 먼저 행렬 A와 B의 크기를 입력받고, 각각의 값을 이차원 배열에 저장한다.
    • 행렬 곱셈을 수행하기 위해 삼중 반복문으로 결과 행렬 C의 각 원소를 계산한다.
      • result[i][j]를 계산할 때, a[i][k] * b[k][j]의 합으로 구한다.
    • 최종적으로 결과 행렬 C의 값을 순서대로 출력한다.
    • StreamReader와 StreamWriter를 사용하면 Console보다 속도가 더 빠르다.
    Share article

    LHS's Study Space

    RSS·Powered by Inblog