hsna7024   2년 전

안녕하세요.

다익스트라로

1 -> V1 - > V2 - > N

1 -> V2  -> V1  -> N

2개의 값중 작은 값으로 출력하게 풀이 하였습니다.

질문을 검색해보니 결과값을 더할때 범위가 벗어날 수 있다고

ans 타입을 long으로 변경해도 오답으로 나옵니다.

다익스트라도 기존에 풀이했던거랑 차이가 없어서 틀리지 않은것 같은데

어디가 잘못 됐는지 못찾고 있습니다.

도와주시면 감사하겠습니다.

alibaba   2년 전

여기도 각 노드상에 못찾아 가능 경우가 있기 때문에 더하기 전해 예외 처리 하시면 될거 같습니다.

hsna7024   2년 전

alibaba 님 감사합니다. 말씀대로 수정하니 통과하였습니다.

그런데 이해가 잘 안되는데 못찾아가는 거리값은 INF 값으로 받을 것이고 최대값인 3*INF도 long에 담기고 있는데

나중에 -1 처리하는 값은 왜 로직이 안맞는건가요

더하기전에 -1 하는것이나 더한 후 INF 넘어가는 값을 -1 처리하나 같은거 같은데

잘못생각하고 있는건가요?


hyseokim   10달 전

int 끼리 더하고 나서 자료형을 변환 하기 때문에 더하기 전에 자료형 변환을 해주어야 합니다.

long ans = (long)distanceStart[v1] + distanceV1[v2] + distanceV2[n];

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