심사문제는 텍스트 일치로만 판단합니다. 따라서 안내 문구를 출력하면 안 됩니다. 프로그램을 실행해서 입력을 받는 부분은 문제의 예시처럼
5 5
*....
.*.**
.*...
.....
.....
이렇게 입력만 받아야 합니다.
문제에서 지뢰는 *로 표시합니다. 따라서 @로 문제를 풀면 안 됩니다.
입력 받을 때 scanf_s는 쓰지 마세요. 이는 C 언어 표준에 있는 함수가 아닙니다. 오직 마이크로소프트 Visual C++에서만 사용하는 비표준 함수입니다. 즉, 현업에서는 거의 안 쓰는 함수입니다. 리눅스나 맥OS에서도 실행되는 코드가 필요하다면 scanf_s는 쓰면 안 됩니다.(리눅스에서 많이 사용하는 gcc, clang에서 scanf_s는 비표준 함수이므로 지원하지 않으며 컴파일도 안 되고 에러만 발생합니다)
Unit 11에서 설명한 것처럼 Visual Studio에서는
#define _CRT_SECURE_NO_WARNINGS
를 쓰세요.
코드의 어느 부분에서 문제가 발생하는지 알아내는 방법은 Unit 6에서 설명한 디버거 사용하기를 참고하세요. 한 단계씩 실행하세요. Unit 6 내용과 동영상 강의를 한 번 보시고, 자신의 프로젝트에서 사용해보세요.
복잡하고 어려워보이지만, 복잡한 화면은 무시하고, 내가 봐야 하는 부분만 보는 법을 알면 됩니다. 디버거는 문제 해결을 도와주는 도구이고, 현업이면 대부분 쓰는 기능입니다.
scanf_s를 scanf로 수정하고 확인해보면
https://glot.io/snippets/f9gsdgg0r5
입력은
3 3
...
...
..*
출력은
46 46 42 0 0 0 0 0 0
문제가 원하는 출력은
000
001
01*
입니다. 000으로 출력해야지, 0 0 0으로 출력하면 안 됩니다.
어려우면 잠시 쉬고, 다음을 공부하다가 언젠가 돌아와서 다시 시도해보세요.