int main()
{
int row, col, cnt;
scanf("%d %d", &row, &col);
char **matrix = malloc(sizeof(char *) * row+1);
for (int i = 0; i<row; i++)
{
matrix[i] = malloc(sizeof(char) * col);
}
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
matrix[i][j] = '.';
}
}
matrix[0][0] = '*';
matrix[1][1] = '*';
matrix[1][3] = '*';
matrix[1][4] = '*';
matrix[2][1] = '*';
for (int i = 1; i<row; i++)
{
for (int j = 1; j<col; j++)
{
if (matrix[i][j] == '*')
{
printf("%c", matrix[i][j]);
}
else if (i == 0 || j == 0)
{
cnt = 0;
if (matrix[i][j + 1] == '*')
cnt++;
if (matrix[i + 1][j] == '*')
cnt++;
printf("%d", cnt);
}
else
{
cnt = 0;
if (matrix[i - 1][j] == '*')
cnt++;
if (matrix[i - 1][j + 1] == '*')
cnt++;
if (matrix[i - 1][j - 1] == '*')
cnt++;
if (matrix[i][j - 1] == '*')
cnt++;
if (matrix[i][j + 1] == '*')
cnt++;
if (matrix[i + 1][j] == '*')
cnt++;
if (matrix[i + 1][j + 1] == '*')
cnt++;
if (matrix[i + 1][j - 1] == '*')
cnt++;
printf("%d", cnt);
}
}
printf("\n");
}
return 0;
}
5행 5열로 입력을 했는데 출력되는 것은 3행 4열로 출력이 됩니다..
원인을 모르겠는데 코멘트 좀 부탁드리겠습니다 ㅠ....
2시간 넘게 고민하다가 도저히 몰라서 질문드립니다..
-. 일단 표시해두고, 다음 단계로 나아간다. 2회차 때 다시 풀어본다. 많은 이해가 쌓이면서 2회차 때 자연스럽게 풀리기도 합니다.
-. 지금까지 작성한 코드를 날리고, 종이와 펜으로 로직을 메모하고 검토한다. 코드로 옮겨본다. 종종 이 방법은 이전보다 더 나은 코드와 해결법에 도달하게 해줍니다.
유닛 번호인 38.8로 포럼에서 검색하면 이전의 많은 질문과 답변을 볼 수 있습니다.
38.8 검색 결과 보기
https://dojang.io/mod/forum/search.php?id=2&search=38.8
malloc으로 char 배열을 할당하는 부분도 잘못되어 있습니다. 다음 답변을 참고하면 문제를 발견할 수 있을 것입니다.
https://dojang.io/mod/forum/discuss.php?d=270&parent=632
여유를 두고 코드를 찬찬히 살펴보는 것도 좋습니다.
가장 추천하는 방법은 첫 번째 접근 방법입니다. "미뤄두고 다음에 다시 도전하기"를 해보세요.