jooyeok42   3년 전

실행할 때마다 어떤 때는 멈추다가 알아서 종료되고, 어떤 때는 값이 잘 출력되는데 제출하면 런타임에러만 뜹니다

답답하네요...  어떻게 실행할 때마다 결과가 불규칙하죠??


+문제 해결 했기 때문에 맞는 소스코드로 정정하였습니다.





djm03178   3년 전

코드를 본문에 올렸다가 다시 복사하면 지금처럼 코드가 깨집니다. 깨지지 않게 고쳐주세요.

jkjan   3년 전

그러니까 dfs를 i부터 j 까지라고 했을 때 depth 는 i 부터 j까지의 거리를 말하는 군요.

113줄에서 visited 를 depth 와 y 로 참조하는 것으로 보아

visited[a][b] 는 i부터 b까지 a만큼 걸려서 갔느냐 안 갔느냐를 판별하는 건데

여기서 a 는 최대 몇까지 나올까요?

 

만일 질문자 님이 59 ~ 61 번째 줄에서 노드를 입력 받을 때

중복되는 입력에 대해서 예외 처리 하셨다면 (그래프를 set으로 받거나 매번 찾거나 해야겠죠)

런타임 에러는 없었을 겁니다.

그렇게 되면 거리의 최대값은 기껏해봐야 99일테니까요.

근데 이 문제는 친구 - 친구의 연결이 중복될 수 있으므로

이 코드에서 depth 가 가질 수 있는 최대값은 4999 입니다.

visited 가 101, 101 로 설정됐으니 런타임 에러가 날 수 밖에 없지요.

 

이 코드를 고치려면 visited 를 일차원 배열로 두고

visited[a] -> a 를 방문했는지 안 했는지? 로 하면 될 거 같습니다.

아니면 그냥 visited 를 [5000][101] 로 설정해도 통과할 거 같습니다.

jooyeok42   3년 전

역시 컴퓨터는 틀리지 않군요!

제 코드가 틀려먹은거였군요 ㅋㅋㅋㅋㅋ

중복값 잘 처리해서 결국 맞았습니다 감사합니다!

pichulia   3년 전

왜 맞는 코드로 고치셨죠ㄷㄷ

게시판의 글을 보는 사람들이나 공부하는 사람들은

맞는 코드보다는 틀린 코드를 더 보고싶어합니다.

그래야지 자신이 뭘 실수했는지를 틀린 코드와 비교해보면서 공부가 되기 때문입니다.

jkjan   3년 전

죄송합니다. 제가 생각이 짧았네요. 좋은 말씀 감사합니다.

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