#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int m, n;
scanf("%d %d", &m, &n);
char** matrix = malloc(sizeof(char*) * m);
for (int i = 0; i < m; i++)
{
matrix[i] = malloc(sizeof(char) * (n + 1));
memset(matrix[i], 0, sizeof(char) * (n + 1));
}
for (int i = 0; i < m; i++)
{
scanf("%s", matrix[i]);
}
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if (matrix[i][j] == '*')
continue;
else
matrix[i][j] = '0';
for (int y = i - 1; y <= i + 1; y++)
{
for (int x = j - 1; x <= j + 1; x++)
{
if (y < 0 || y >= m || x < 0 || x >= n)
continue;
else if (matrix[x][y] == '*')
matrix[i][j]++;
}
}
}
}
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
printf("%c", matrix[i][j]);
}
printf("\n");
}
for (int i = 0; i < m; i++)
{
free(matrix[i]);
}
free(matrix);
return 0;
}
이런 식으로 짜봤는데 테스트 케이스 예제처럼 나오지 않더라구요.. 어디가 문제인가요?? 38.8과 관련된 게시글을 읽어봐도 감이 안 와요
아! 알아냈습니다. 그런데 궁금한 게 생겼습니다.
matrix[i] = malloc(sizeof(char) * (n + 1)); 이 부분에서 n+1과 (n+1)에 차이가 있던데 이럴 때는 어떤 게 맞나요?