QuqqU   6년 전

부동소수점 오차 때문에 틀릴 수도 있다 해서, 모든 정수에 2를 곱해서 사용했고요,

터질까봐 long long int 도 썼습니다.


그래도 1%에서 가차없이 나가는데 왜 그런가요?

chogahui05   6년 전

이 문제 어려운 거 같아요.


일단 문제 조건대로 해석해 보면, 혼잡한 길인 경우 퇴근 시간에 1초에 0.5씩 이동합니다.

그렇지 않은 경우 1초에 1씩 이동합니다.


이렇게 되어 있습니다.

그렇기 때문에, 어떤 경우에는 x.5초에 도로를 빠져 나올 수도 있다는 것이지요.


그러면 거꾸로 이렇게 생각해 봅시다.

0.5초 = 1 단위시간으로 생각해 봅시다.


속도도 정수 단위가 되어야 한다고 생각해 볼까요?

혼잡한 경우, 1단위시간에 1만큼 이동합니다.

안 혼잡한 경우 1단위시간에 2만큼 이동합니다.


그러면 혼잡한 경우에, 2단위시간에 2만큼, 안 혼잡한 경우 2단위시간에 4만큼 이동하네요.

원래 도로 길이에 4를 곱해야 한다는 느낌이 확 옵니다. 힌트는 여기까지 드리겠습니다.

chogahui05   6년 전

예를 하나 들어드리겠습니다.


원래 도로의 길이가 13이였습니다. 혼잡한 경우, 26초가 걸립니다.

이를 제가 말한 단위시간으로 환산하면 52단위시간이 걸리는군요.


혼잡한 경우, 1단위시간당 1만치 이동한다고 약속했으므로, 올바른 답이 나오기 위해서는 원래 도로 길이에 4를 곱해야 한다는 것을 알 수 있어요.

QuqqU   6년 전

속도 * 시간 = 거리 에서


시간이 double형으로 지정될 경우(0.5단위) 부동소수점 오차가 발생해 틀릴 수도있다고 하여,

속도 * (시간*2) = (거리*2) 로 시간과 거리만 2씩 곱해주어서 풀은 건데,


속도 까지 굳이 2를곱해 정수단위로 만들어야하는 이유는 무엇인가요??


whentraffic에서 모든 단위는 짝수로 돌아가서, 굳이 속도까지 2를 곱해줄 필요는 없지 않나요???(아닌가...??ㅠㅠ)

chogahui05   6년 전

퇴근 시간에 혼잡한 도로인 경우 1초에 0.5씩 가거든요.

QuqqU   6년 전

INF 가 너무 작아서 생기던거였습니다!

INF를 922222222222222222로 longlong int의 최댓값에 가깝게 바꾸니깐 되는군요!

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