subminu   5년 전

이 문제를 푸는데 있어서 가장 마지막 걸림돌이 되었던 건 중앙값이였습니다.

중앙값을 구하는 아이디어는 round(N/2)-1을 하면 된다고 생각하였지만 실제로 구현해보니 round(2.5)의 값이 2로 나오더군요. 

원래 round 함수는 반올림 하는 함수인 걸로 알고 있는데 왜 이러한 결과가 나오는지 모르겠습니다.

jung2381187   5년 전

반올림을 할 때 반올림 자리 아래가 정확히 .5가 되는 경우엔 반올림 방법이 여럿 있습니다. 프로그래밍 언어에서 가장 많이 쓰이는 방식은 round to nearest even으로, 가장 가까운 “짝수”로 반올림합니다. 보통 생각하는 반올림(.5는 무조건 올림)과 다르기 때문에 1e-9같이 정답에 영향을 미치지 않는 아주 작은 수를 뺀 다음 반올림하거나 직접 정수 나눗셈으로 반올림을 구현해야 합니다.

jung2381187   5년 전

수정) 아주 작은 수를 뺀 다음 -> 아주 작은 수를 더한 다음

subminu   5년 전

round to nearest even을 위키에 검색해보니 앞 자리수가 홀수 일때는 올림을 앞자리가 짝수일 때는 내림을 하는군요. 

https://ko.wikipedia.org/wiki/...

여태껏 round를 썼는데 모르고 있었네요. 알려 주셔서 감사합니다.

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