코드를 본문에 올렸다가 다시 복사하면 지금처럼 코드가 깨집니다. 깨지지 않게 고쳐주세요.
1389번 - 케빈 베이컨의 6단계 법칙
그러니까 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년 전
실행할 때마다 어떤 때는 멈추다가 알아서 종료되고, 어떤 때는 값이 잘 출력되는데 제출하면 런타임에러만 뜹니다
답답하네요... 어떻게 실행할 때마다 결과가 불규칙하죠??
+문제 해결 했기 때문에 맞는 소스코드로 정정하였습니다.