jungsk20   1년 전

ceil을 이용해서 풀려고 했는데 계속 틀렸다고 결과가 나옵니다.

뭐가 문제인가요 .....?

wak8835   1년 전

ceil 로 연산 수행 시에 arr[i]를 실수 연산으로 처리하여 k를 나눗셈 할 때에 오차가 발생하는 것으로 보입니다.

정수 올림 시에는 수학적인 방법을 사용하여 `ceil(x/y) == floor((x+y-1)/y)` 임을 이용하여 연산을 고쳐주는 것이 바람직 합니다.

s += (arr[i] + k - 1) / k; // ceil((float)arr[i] / k);

이와 같은 방법이 생각나지 않으신다면 조건문과 삼항연산자를 사용하여 나머지 연산 수행 시에 나머지가 발생하는지를 확인하셔서 처리해주셔도 됩니다.

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