7562번 - 나이트의 이동
I의 최대 값은 300이기 때문에,
300x300의 visit 테이블을 만들었는데요
자꾸 틀리더라고요.
그래서 301x301로 바꾸었더니 통과가 되었습니다.
주어지는 위치도 {0, ... , I-1} x {0, ... , I-1}이라서
300x300으로 잡아도 오류가 안나야 할 것 같은데
이상하네요...
혹시 위치가 I 로 주어지는 경우도 있는걸까요?
301로 된 이 코드 그대로 내도 틀립니다.
아 이 코드는 Clang(C++17)로 내셔야 합니다...
저도 질문자님의 제출 현황을 보고 C++17 (Clang)으로 냈는데 틀렸습니다. 사실 그건 49번째 줄 때문인데, 왜 그게 들어갔는지는 모르겠지만 질문을 올리실 때에는 제출했던 코드를 그대로 올려주셔야 합니다.
일단 그걸 지워도 300으로 했을 때 틀리는 걸 보긴 했습니다.
전혀 관계 없어보이지만, 놀랍게도 문제는 28번째 줄입니다. 큐에 들어있는 원소를 참조자로 받아올 경우 pop을 하는 순간 변수가 사라지기 때문에 더 이상 사용할 수 없는 상태가 되고, 이 값을 사용하는 것은 undefined behavior가 됩니다. 참조자만 지워주면 300으로 해도 맞습니다.
죄송합니다 ㅜㅜ 복사하다가 return 0;이 잘못들어갔네요;
통과된 소스입니다.
와... 정말 그렇네요
정말 생각지도 못한 부분이었습니다.
이걸 발견하신게 정말 대단한것같네요...
감사합니다!!!!
댓글을 작성하려면 로그인해야 합니다.
stlee 2년 전
I의 최대 값은 300이기 때문에,
300x300의 visit 테이블을 만들었는데요
자꾸 틀리더라고요.
그래서 301x301로 바꾸었더니 통과가 되었습니다.
주어지는 위치도 {0, ... , I-1} x {0, ... , I-1}이라서
300x300으로 잡아도 오류가 안나야 할 것 같은데
이상하네요...
혹시 위치가 I 로 주어지는 경우도 있는걸까요?