
https://www.acmicpc.net/problem/2738
문제: 백준 2738번 문제는 두 개의 행렬이 주어졌을 때, 그 두 행렬을 더하는 문제입니다. 주어진 두 행렬의 크기가 같고, 각 원소를 더한 결과를 출력하면 됩니다.
문제 풀이:
입력 받기:
첫 번째 줄에서 행렬의 크기인 N과 M을 입력받습니다.
그 후 N개의 줄에 걸쳐 두 개의 행렬 A와 B의 원소들이 주어집니다.
행렬 덧셈:
두 행렬의 동일한 위치에 있는 원소들을 더합니다.
결과 행렬을 출력합니다.
핵심 아이디어:
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)를 활용한 입력 처리 과정에서 조금 더 효율적인 코드를 작성할 수 있다는 것을 배웠습니다.