24466번 - 도피
도피하고 싶은 문제네요
혹시 스트링 형태로 정답을 출력하면 오답 처리 되나요??
만약 이것 때문에 틀린 게 아니라면 어디서 틀렸는지 궁금합니다..ㅠ
확률은 더블로 구해서 스트링으로 바꿔서 소수점 18번째 자리까지만 잘랐고
예제는 다 잘나오는데 어디서 틀린 지 모르겠습니다.
이 문제는 실수를 사용하지 않고 푸는 방법이 존재합니다.
실수로 이 문제를 풀 수 있는지는 확인을 해보지 않았습니다만, 문제에서 요구하는 정밀도가 소수점 18째자리로 매우 높고, 실수 오차가 허용되지 않는 문제이기 때문에 임의로 실수 정밀도를 끌어올리지 않는 이상은 풀기 어려울 것으로 생각이 됩니다.
java의 double은 정밀도가 15 ~ 16자리라 더 높은 정밀도를 가지는 실수 자료형을 사용하거나 다른 방법을 사용해서 풀어야 합니다.
실수를 사용하지 않는다면 문자열로 계산하는 방법을 말씀하시는 건가요..??
10^9를 곱하는 방법으로 실수가 아닌 정수로 계산할 수 있습니다. 답을 출력할 때만 소수점을 맞춰서 해주면 됩니다.
저도 그 방법으로 9일차에 확률이 100퍼센트라고 해도 100^9 일테니 int나 long long으로 커버가 가능하다고 생각해서 정수형으로 계산했습니다
마지막에 출력할 때는 정수를 스트링으로 바꿔서 소수점으로 변환 후 출력해줬는데 틀렸습니다 ㅠ
출력 방식에 문제가 있는 것 같은데 좋은 방법 있을까요???
답변 감사합니다 ㅎㅎ
제가 위에서 잘못 썼네요
확률을 N%라고 했을 때, 0.N으로 저장하는게 아니라, N으로 저장해서 풀면 됩니다.
그러니까, 0.00 ~ 1.00으로 저장하는 대신에, 0 ~ 100으로 저장해서 푸는겁니다.
모든 길이 100%의 확률이더라도 9번 밖에 이동하지 않기 때문에, 100^9 = 10^18이므로 long long만 사용해서 풀 수 있습니다
넵 제가 다시 올린 코드 보시면 dp배열을 long long 으로 만들어서
예제1을 예시로 9일차에 8번에 있을 확률에 long long 242078400000000000 값이 저장되어 있습니다.
이걸 문자열로 변환한 다음 소수점을 만들어 주고 출력했는데 틀렸다고 하네요..
아래 코드에서 double을 ll(int형도 괜찮음)로 바꿔야 합니다.
int면 long long으로 형변환을 하는데 long long하고 double이 있으면 long long이 double로 형 변환되면서 계산이 제대로 안됩니다.
이거만 수정해주시면 맞을 거 같습니다.
와 드디어 AC 받았습니다 chansol님 복받으세요
감사합니다👍👍
감사합니다 jk6722님 chansol님 덕분에 AC받았습니다!
댓글을 작성하려면 로그인해야 합니다.
jk6722 2년 전
도피하고 싶은 문제네요
혹시 스트링 형태로 정답을 출력하면 오답 처리 되나요??
만약 이것 때문에 틀린 게 아니라면 어디서 틀렸는지 궁금합니다..ㅠ
확률은 더블로 구해서 스트링으로 바꿔서 소수점 18번째 자리까지만 잘랐고
예제는 다 잘나오는데 어디서 틀린 지 모르겠습니다.