예외케이스 때문이 아니라 다른 이유때문인것 같습니다.
이차원 배열에 캐스팅까지 하시면서 큰 오류 없고 깔끔하게 코딩을 잘 하시는 것 같네요.
문제는 front = &q.front(); q.pop(); 인 것 같습니다.
복사를 최소화하려고 q.push(Point(i,j,0)); 이렇게하고 포인터로 받으셨는데,
q.pop() 하는 순간 front 가 가리키는 곳은 해제(보호받지 못하는 메모리)가 되어 버려서 다른 값이 써질 수 있습니다.
운이나 컴파일러, 옵션에 따라서 문제가 없을 수도 있지만 분명 오류가 있는 코드인 것 같습니다.
값을 참조로 받지 않고나 q.pop()을 front 다 쓴 순간 (69줄)로 옮기면 어떨까 합니다.
그리고 사족이지만
* visit[i][j+1] = 1; // visit 은 bool 배열입니다.
* malloc 보다는 new 를 썼으면 더 깔끔하지 않았을까 합니다.
* Tomato 는 계산만하고 출력은 main 에 하면 역할 분담이 더 잘되지는 않았을까란 생각을 해봅니다.
dmbs335 6년 전
틀린게 없어보이는데 2퍼센트에서 틀렸다고 떠서
온갖 테케를 다 찾아서 입력해봐도 정상적으로 나오는데 왜 틀린지를 모르겠습니다.