rootsquare   2년 전

문제의 일부입니다.

"텔레포트를 사용하는 것이다. 텔레포트를 할 수 있는 방법은 총 세 가지가 있으며, 미리 정해져 있다. 텔레포트는 네 좌표 (x1, y1), (x2, y2)로 나타낼 수 있으며, (x1, y1)에서 (x2, y2)로 또는 (x2, y2)에서 (x1, y1)로 이동할 수 있다는 것이다. 텔레포트는 10초가 걸린다."

텔레포트를 할 수 있는 방법은 미리 정해져 있으나, 문제의 어디에도 (x1,y1)에서 (x2,y2)까지 가는데 '반드시' 텔레포트를 사용해야 한다는 법이 없습니다.

매번 이동할 때 점프나 텔레포트 둘 중 하나를 사용합니다.

이 경우 정해진 텔레포트 좌표가 (1,1),(2,2)일 경우, 텔레포트를 쓸 경우 10초가 걸리지만 점프로 가면 2초만에 갈 수 있습니다.(물론 그 반대도 성립합니다.)

이 문제를 풀기 위해 8개 지점의 좌표를 지정해 놓고 플로이드 알고리즘을 사용하여 최단경로를 찾았는데,

텔레포트를 할 수 있는 두 점에 대하여

제출번호 38626919와 같이 텔레포트보다 점프가 더 빠를 경우 점프로 가는 것을 선택한 코드가 틀리게 나오고(A)

제출번호 38627320과 같이 텔레포트 경로를 10으로 고정한 코드가 맞게 나오고 있습니다.(B)


문제 조건에 "텔레포트를 할 수 있는 점에 도착했을 경우 반드시 텔레포트를 해야 한다"라는 조건을 추가하거나, (A)와 같은 조건으로 데이터 수정 및 재채점을 해야합니다.

jh05013   2년 전

38626919는 다른 이유로 틀렸습니다. 코드를 처음부터 한 줄씩 비교해 보세요.

삼각 부등식에 의해 38627310은 맞는 코드입니다.

jh05013   2년 전

그리고 "반드시 텔레포트를 해야 한다"같은 조건이 붙으면 문제가 더 이상해질 것 같습니다.

rootsquare   2년 전

(A) 코드가 틀린 이유를 알 것 같습니다.

+추가해 주신 데이터처럼 텔레포터와 집, 시작점이 모두 같은 줄에 있는 경우를 놓치고 있었네요...

감사합니다!

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