입력: 10 10 ########## #RB....#.# #..#.....# #........# #.O......# #...#....# #........# #........# #.......## ##########
출력: 10
이렇게 나오는데 -1이 나와야 하지 않을까요?
13460번 - 구슬 탈출 2
저건 10이 맞습니다.
무슨 컴파일러를 사용하시는지는 모르겠지만, 제가 이 코드를 컴파일하면 다음과 같은 경고가 발생했습니다.
1>c:\users\new\source\repos\tester\wrong\wrong.cpp(103): warning C4477: 'scanf' : 서식 문자열 '%d'에 'int *' 형식의 인수가 필요하지만 variadic 인수 1의 형식이 'char *'입니다. 1>c:\users\new\source\repos\tester\wrong\wrong.cpp(103): note: 서식 문자열에서 '%hhd'을(를) 사용하는 것이 좋습니다. 1>c:\users\new\source\repos\tester\wrong\wrong.cpp(103): warning C4477: 'scanf' : 서식 문자열 '%d'에 'int *' 형식의 인수가 필요하지만 variadic 인수 2의 형식이 'char *'입니다. 1>c:\users\new\source\repos\tester\wrong\wrong.cpp(103): note: 서식 문자열에서 '%hhd'을(를) 사용하는 것이 좋습니다.
컴파일러의 경고는 함부로 무시해도 되는 것이 아니며, 경고를 띄우는 것은 다 이유가 있습니다. 코드를 보면 char형 변수인 n, m에 %d로 입력을 받고 있는데, scanf에게 %d를 주면 무조건 sizeof(int)만큼의 메모리에 값을 넣으므로 char형 변수인 n과 m에게 할당된 공간을 벗어나버립니다. 저것만 고치니 맞았습니다.
댓글을 작성하려면 로그인해야 합니다.
nagion 5년 전
C++, BFS 방식으로 풀어보고 있습니다. 제목처럼 예제란 예제는 다 넣어도 맞다고 나오는데 왜 채점은 틀렸는지 모르겠어요.. 원인이 뭘까요ㅠ?