문제 링크 : https://www.acmicpc.net/problem/2738
목차
1. 설명
2. 내 코드
3. 문제 풀이 해석 내용
4. 실행 결과
설명
백준 브론즈 3 문제 입니다.
문제명 : 행렬 덧셈
내 코드
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
vector<vector<int>> matrix(n, vector<int>(m, 0));
for (int i = 0; i < n * 2; i++)
{
for (int j = 0; j < m; j++)
{
int value;
cin >> value;
int ry = (i < n) ? i : i - n;
matrix[ry][j] += value;
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
문제 풀이 해석 내용
헤더 파일 포함 및 네임스페이스 사용
#include<iostream>
#include<vector>
using namespace std;
iostream은 입출력을 위한 헤더 파일이고, vector는 동적 배열을 사용하기 위한 헤더 파일입니다.
using namespace std;는 std 네임스페이스를 사용하여 코드에서 std::를 생략할 수 있게 합니다.
메인 정의 및 변수 선언과 입력
int main()
{
int n, m;
cin >> n >> m;
프로그램의 시작점인 main 함수를 정의합니다.
두 개의 정수 n과 m을 입력받습니다. 여기서 n은 행렬의 행 수, m은 열 수입니다.
행렬 초기화
vector<vector<int>> matrix(n, vector<int>(m, 0));
n x m 크기의 2차원 벡터 matrix를 생성하고, 모든 요소를 0으로 초기화합니다.
행렬 요소 입력 및 합산
for (int i = 0; i < n * 2; i++)
{
for (int j = 0; j < m; j++)
{
int value;
cin >> value;
int ry = (i < n) ? i : i - n;
matrix[ry][j] += value;
}
}
i는 0부터 n * 2 - 1까지 반복합니다. 이는 두 개의 행렬을 입력받기 위한 것입니다.
j는 0부터 m - 1까지 반복하여 각 열의 값을 입력받습니다.
cin >> value;로 입력받은 값을 value에 저장합니다.
ry는 현재 행을 결정하는 변수입니다. 첫 번째 행렬의 경우 i, 두 번째 행렬의 경우 i - n을 사용하여 같은 행에 값을 더합니다.
matrix[ry][j] += value;를 통해 해당 위치에 값을 누적합니다.
5
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
결과 행렬을 출력합니다. 각 요소를 공백으로 구분하여 출력하고, 각 행이 끝날 때마다 줄을 바꿉니다.
main 함수가 종료되며, 프로그램이 정상적으로 종료됨을 나타냅니다.
실행 결과
'c++' 카테고리의 다른 글
백준 c++ 2476 문제 풀이 (0) | 2025.04.05 |
---|---|
백준 c++ 2562 문제 풀이 (0) | 2025.04.04 |
백준 c++ 1264 문제 풀이 (0) | 2025.04.02 |
백준 c++ 2884 문제 풀이 (0) | 2025.04.01 |
백준 c++ 2439 문제 풀이 (0) | 2025.03.31 |