miles94   1년 전

흠... 문제도 차근차근 다시 읽어봤고, 구현해야 될 거 다 고려했고,

질문에서도 반례들 찾아서 다 적용했는데 틀렸습니다가 나오네요 ㅠㅠ

vertex 의 개수가 크지 않아 그냥 adj matrix 로 했고,

딱히 틀린 부분도 보이지 않는데, 이상하군요 ㅎㅎ...

djm03178   1년 전

배열의 크기가 1001이면 루프도 < 1001로 돌아야 됩니다. 크기가 1001인 배열은 인덱스가 1000까지 있는데, < 1002로 돌면 1001번째 인덱스에 접근하기 때문입니다.

miles94   1년 전

아 그렇네요. 실수했군요. 

흠 그런데, 런타임에러가 나지 않고 틀렸습니다가 나온 것은 왜일까요?

djm03178   1년 전

배열의 인덱스를 침범한다고 해서 무조건 에러가 나지는 않습니다. 메모리는 일반적으로 연속적으로 할당되므로, 배열의 범위를 넘어서면 그 다음에는 그 프로그램의 다른 변수의 주소에 접근할 가능성이 높을 뿐만 아니라, 메모리 자체가 할당받은만큼 정확하게 할당되지 않고 블럭 단위로 한 번에 할당되기 때문에 조금 벗어나는 것 정도로는 런타임 에러가 나지 않을 가능성이 높습니다. 그리고 edge[5][1001]은 edge[6][0]과 같기 때문에 이 자체로는 메모리 침범도 되지 않습니다. check[1001]은 어디를 나타낼지 모릅니다.

miles94   1년 전

감사합니다. 많은 도움이 되었습니다!

댓글을 작성하려면 로그인해야 합니다.