728x90
문제 링크 : https://www.acmicpc.net/problem/2738
백준 브론즈 3 문제 입니다.
내 코드
string input = Console.ReadLine();
string[] splitInput = input.Split(' ');
int n = int.Parse(splitInput[0]);
int m = int.Parse(splitInput[1]);
int[,] matrix = new int[n, m];
for (int i = 0; i < n*2; i++)
{
string inputRow = Console.ReadLine();
string[] splitRows = inputRow.Split(' ');
for (int j = 0; j < splitRows.Length; j++)
{
int ry = i < n ? i : i - n;
matrix[ry, j] += int.Parse(splitRows[j]);
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
Console.Write($"{matrix[i, j]} ");
}
Console.WriteLine();
}
코드 풀이 해석 내용
입력 받기
string input = Console.ReadLine();
string[] splitInput = input.Split(' ');
int n = int.Parse(splitInput[0]);
int m = int.Parse(splitInput[1]);
첫 번째 줄에서 행렬의 행 수 n과 열 수 m을 입력받습니다.
입력된 문자열을 공백으로 나눕니다. 그 다음 splitInput 배열에 저장하고, 각각 정수형으로 변환합니다.
행렬 초기화
int[,] matrix = new int[n, m];
n x m 크기의 정수형 2차원 배열 matrix를 초기화합니다.
행렬 입력 및 합산
for (int i = 0; i < n * 2; i++)
{
string inputRow = Console.ReadLine();
string[] splitRows = inputRow.Split(' ');
for (int j = 0; j < splitRows.Length; j++)
{
int ry = i < n ? i : i - n;
matrix[ry, j] += int.Parse(splitRows[j]);
}
}
(n * 2)번 반복하여 총 2개의 행렬을 입력받습니다. 이 부분에서 i는 0부터 2n-1까지의 값을 가집니다.
각 입력 행은 공백으로 나누어 splitRows 배열에 저장됩니다.
ry는 현재 입력이 첫 번째 행렬에 해당하는 경우와, 두 번째 행렬에 해당하는 경우를 구분합니다 -->
i < n: 첫 번째 행렬의 행
i >= n: 두 번째 행렬의 행 (이때 i - n으로 계산).
각 원소를 정수로 변환하여 matrix의 해당 위치에 누적합을 더합니다.
결과 출력
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
Console.Write($"{matrix[i, j]} ");
}
Console.WriteLine();
}
최종적으로 합산 된 matrix의 내용을 출력합니다.
각 행을 출력한 뒤, 줄바꿈을 합니다.
실행 결과
728x90
'C#' 카테고리의 다른 글
백준 C# 10798 문제 풀이 (0) | 2024.09.20 |
---|---|
백준 C# 2566 문제 풀이 (0) | 2024.09.19 |
백준 C# 1259 문제 풀이 (0) | 2024.09.19 |
백준 C# 25206 문제 풀이 (0) | 2024.09.19 |
백준 C# 2775 문제 풀이 (4) | 2024.09.18 |