개인공부/백준
[백준(BOJ)] 행렬 덧셈 | 2738번 문제 풀이 (브론즈3, C언어)
피까츄
2024. 6. 29. 20:22
1. 문제
2. 풀이
각 행렬의 값을 더하면 되는 간단한 문제이다.
*2차원 배열에 대해 해설할 것
3. 코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int N, M, num;
scanf("%d %d", &N, &M);
int a[100][100];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
scanf("%d", &a[i][j]);
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
scanf("%d", &num);
a[i][j] += num;
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
}
동적 메모리 할당ver.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int N, M;
scanf("%d %d", &N, &M);
int** array = (int**)malloc(N * sizeof(int*));
for (int i = 0; i < N; i++) {
array[i] = (int*)malloc(M * sizeof(int));
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
scanf("%d", &array[i][j]);
}
}
int** array_2 = (int**)malloc(N * sizeof(int*));
for (int i = 0; i < N; i++) {
array_2[i] = (int*)malloc(M * sizeof(int));
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
scanf("%d", &array_2[i][j]);
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
array[i][j] += array_2[i][j];
printf("%d ", array[i][j]);
}
printf("\n");
}
for (int i = 0; i < N; i++) {
free(array[i]);
free(array_2[i]);
}
free(array);
free(array_2);
return 0;
}