어디가 잘못됬는지 잘 모르겠습니다ㅜㅡㅠ
코드 지적 부탁드립니다~!
#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;
matrix[i][j] = '0';
}
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (matrix[i][j] == '*') {
for (int y = i - 1; y <= i + 1; y++) {
for (int x = j - 1; x <= j + 1; x++) {
if (y < 0 || x < 0 || y >= m || x >= n) {
continue;
matrix[y][x] += 1;
}
}
}
}
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (matrix[i][j] == '*') {
printf("*");
}
else
printf("%d", matrix[i][j]);
}
printf("\n");
}
for (int i = 0; i < m; i++) {
free(matrix[i]);
}
free(matrix);
return 0;
}
지뢰찾기는 중간고사 성격과 같은 문제입니다. 지금까지 배운 것을 잘 응용해서 풀어야 합니다. 2차원 배열을 잘 다룰 수 있는지를 살펴보는 문제입니다. 신입 코딩 문제로도 자주 나옵니다.(2차원 배열은 잘 다룰 수 있나, 배열의 범위를 벗어나는 문제는 안 생기나, 메모리 할당은 잘 하나 등)
https://glot.io/snippets/f9gs0kmwms
여기서 Run을 클릭해서 실행해보면 됩니다.
Input에는 샘플 데이터를 넣어봤습니다.
3 3
...
...
..*
Run을 클릭하면 결과는
464646 464646 4646*
어떤 부분이 문제인지 확인해야 합니다.
Unit 6 디버거 사용하기를 보시면 한 단계씩 실행하기가 있습니다. 디버거를 사용해서 한 단계씩 실행해보세요. 디버거가 처음에 복잡하게 보여서 어려워보이는데, 그런 건 무시하고 자주 쓰면서 내가 봐야 하는 것만 보면 됩니다. 이건 Unit 6에 충분히 설명되어 있습니다.