코딩도장 지뢰찾기 문제푸는 중인데 

5 5

*....
.*.**
.*...
.....
.....


입력하면


*2222
3*3**
2*322
11100
00000

가 나와야 하는데 내가 돌려보면

*1111

2*2**

1*211

11100

00000

처럼 약간씩 안맞게 나와

싸지방이라 디버깅은 못해봤는데 아무리봐도 잘못된데가 안보여ㅠㅠ

밑에 지뢰 근처에꺼 더해주는데서 오류가 나는거같다고 짐작만 하고있는데

형들 머가문제인걸까ㅠ 



#include <stdio.h>


int main() {

    

    int m, n;

    

    scanf("%d %d", &m, &n);

    

    char matrix[m+2][n+2];

        // 입력받은 네모칸 보다 주변에 한줄 씩 더 배열생성

    

    for (int i = 1; i <= m; i++)

    {

        scanf("%s", matrix[i]+1);

    }   // 지뢰는 *, 아니면 . 으로 입력

    

    for (int i = 0; i < m+2; i++)

    {

        for (int j = 0; j < n+2; j++)

        {

            if (matrix[i][j] != '*')

                matrix[i][j] = 0;

        }

    }   // 입력받아서 *아닌데는 다 0으로 치환 (네모칸 밖의 줄에도 적용)

    

    

    for (int i = 0; i < m+2; i++)

    {

        for (int j = 0; j < n+2; j++)

        {

            if (matrix[i][j] == '*')

            {

                matrix[i-1][j-1]++;

                matrix[i-1][j]++;

                matrix[i-1][j+1]++;

                matrix[i][j-1]++;

                matrix[i][j+1]++;

                matrix[i+1][j-1]++;

                matrix[i+1][j]++;

                matrix[i+1][j+1]++;

            }

        }

    }   // 싹 훑어서 *나올때마다 주변8칸에 1씩 더해줌

    

    for (int i = 1; i <= m; i++)

    {

        for (int j = 1; j <= n; j++)

        {

            if (matrix[i][j] >= 42)

                printf("%c", '*');

            else

                printf("%d", matrix[i][j]);

        }

        printf("\n");

    }   // 네모칸 안 출력   

        // * 혹은 *에 1,2정도 더해진거는 *로 출력

        // 아닌건 정수값 출력

        

    return 0;

}