백준 C# 2738 - 행렬 덧셈

김보근·2025년 5월 13일

백준

목록 보기
15/62

백준 2738번 - 행렬 덧셈


https://www.acmicpc.net/problem/2738

문제: 백준 2738번 문제는 두 개의 행렬이 주어졌을 때, 그 두 행렬을 더하는 문제입니다. 주어진 두 행렬의 크기가 같고, 각 원소를 더한 결과를 출력하면 됩니다.

문제 풀이:

  1. 입력 받기:

    첫 번째 줄에서 행렬의 크기인 N과 M을 입력받습니다.

    그 후 N개의 줄에 걸쳐 두 개의 행렬 A와 B의 원소들이 주어집니다.

  2. 행렬 덧셈:

    두 행렬의 동일한 위치에 있는 원소들을 더합니다.

    결과 행렬을 출력합니다.

  3. 핵심 아이디어:

    Console.ReadLine()을 사용하여 한 줄씩 입력받고, Split()으로 공백을 기준으로 나눈 후 int.Parse()로 각 원소를 정수로 변환합니다.

    int[,] 배열을 사용하여 행렬을 저장하고, 행렬 덧셈을 진행합니다.

using System;
using System.Collections.Generic;
using System.Text;

namespace backjoon
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // N과 M 입력
            var nm = Console.ReadLine().Split().Select(int.Parse).ToArray();
            int N = nm[0], M = nm[1];

            // 행렬 A와 B 입력
            int[,] A = new int[N, M];
            int[,] B = new int[N, M];
            int[,] C = new int[N, M];  // 결과 행렬

            // 행렬 A 입력
            for (int i = 0; i < N; i++)
            {
                var row = Console.ReadLine().Split().Select(int.Parse).ToArray();
                for (int j = 0; j < M; j++)
                {
                    A[i, j] = row[j];
                }
            }

            // 행렬 B 입력
            for (int i = 0; i < N; i++)
            {
                var row = Console.ReadLine().Split().Select(int.Parse).ToArray();
                for (int j = 0; j < M; j++)
                {
                    B[i, j] = row[j];
                }
            }

            // 행렬 A와 B 덧셈 결과 C 계산
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < M; j++)
                {
                    C[i, j] = A[i, j] + B[i, j];
                }
            }

            // 결과 출력
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < M; j++)
                {
                    Console.Write(C[i, j] + " ");
                }
                Console.WriteLine();
            }

        }
    }
}

설명:

입력 받기:

Split()과 Select(int.Parse)를 사용하여 공백으로 구분된 문자열을 정수로 변환하여 배열	에 저장합니다.

행렬 덧셈:

두 행렬 A와 B의 원소들을 더하여 결과 행렬 C에 저장합니다.

결과 출력:

행렬 C의 원소를 한 줄씩 출력합니다.

느낀 점:

문제 자체는 단순한 행렬 덧셈이지만, 배열을 다루는 방식과 Split(), Select(int.Parse)를 활용한 입력 처리 과정에서 조금 더 효율적인 코드를 작성할 수 있다는 것을 배웠습니다.

profile
게임개발자꿈나무

0개의 댓글