20210112 // BaekJoon Online Judge // 1008

2021. 1. 12. 15:40Programming/BOJ

BaekJoon Online Judge 1008번 "A/B" 문제입니다.

a, b = map(int, input().split())
print("%.9f" % (a / b))

쉽다고 생각하는 문제인데 정답률이 30퍼대다. 왜인지 자세히 보니

 

상대오차 10^(-9) 조건이 있다. 이 말은 뭐냐면 나의 출력값과 예제의 출력값의 차가 10^(-9)이하일 경우에만

 

정답을 허용한다는 소리다. 예를 들어 1/3 은 0.33333333... 의 무한소수다. 하지만 이를 파이썬에서 출력하면

 

파이썬에서 1/3을 출력했을 경우

이런 식으로 6자리까지 밖에 출력이 되지 않는다. 이렇게 되면 0.333333...에서 0.333333을 빼면

 

0.00000033333....이 나오고 이는 10^(-9)보다 크므로 상대오차의 조건을 만족하지 못하게 된다.

 

따라서 출력할 때에 포맷을 %.9f 로 해주면 소수점 9번째 자리까지 출력을 하므로 상대오차의 조건을 만족하게 된다.