1. 문제 상세
https://www.acmicpc.net/problem/2738
2. 문제 접근
N*M 크기의 행렬을 입력받아 행렬의 원소의 값을 더해 출력하자.
N 과 M 은 100 이하이므로 2차원 배열의 크기는 100*100 으로 선언한다.
N 과 M 을 첫째 줄에 입력받는다.
한 줄에 정수 M 개를 N 줄 입력받도록 반복하고, 이를 두 번 반복한다.
이제 두 행렬에서 각 원소들의 값을 더하고 행렬을 출력하자.
3. 문제 풀이
#include <iostream>
using namespace std;
int main() {
int a[100][100], b[100][100], n, m;
cin >> n >> m;
for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) cin >> a[i][j];
for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) cin >> b[i][j];
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) cout << a[i][j] + b[i][j] << ' ';
cout << '\n';
}
}
크기가 100*100 인 정수형 2차원 배열(행렬) a 와 b 를 선언하고, 정수형 변수 n 과 m 을 선언한다.
cin 으로 정수 두 개를 입력받아 n 과 m 에 저장한다.
for문으로 i 가 0부터 n 보다 작을 때 1씩 더하며 반복한다.
다시 for문으로 j 가 0부터 m 보다 작을 때 1씩 더하며 반복한다.
cin 으로 정수를 입력받아 배열 a[i][j] 에 저장한다.
위와 같은 방법으로 정수를 입력받아 행렬 b 에 저장한다.
위와 같은 반복문에서 cout 으로 a[i][j] 와 b[i][j] 를 더한 값을 출력하고 공백 문자를 하나 출력한다.
한 행의 출력이 끝나면 개행문자를 출력한다.
4. 성능 확인
5. 마무리
for문의 조건에서 < 가 아닌 = 를 적는 바람에(대체 왜?..) 계속 시간 초과가 떠서 한참을 헤맸다..
문제를 아무리 풀어도 비슷한 실수를 반복한다..조심좀 하자..
'백준 - 단계별로 풀어보기 > 2차원 배열' 카테고리의 다른 글
[백준] 2563번 : 색종이 | C++ (0) | 2023.10.13 |
---|---|
[백준] 10798번 : 세로읽기 | C++ (0) | 2023.10.12 |
[백준] 2566번 : 최댓값 | C++ (0) | 2023.10.12 |