mwy3055   4년 전

질문게시판에서 자주 언급되었던 실수와 반례를 모아 봤습니다. 데이터를 만들어 주신 @cubelover, @Juno 님께 감사드립니다.

1. CCW 판별할 때

- 좌표의 범위가 [-40000, 40000]입니다. 80000의 제곱은 32비트 정수형으로는 처리할 수 없습니다. 계산 과정에서 오버플로우가 발생하지 않는지 확신할 수 없다면 더 큰 정수형을 사용하세요. 특히 Java를 사용하시는 분들이라면 이거 때문에 런타임 에러를 받을 수 있습니다.

- double형의 분수 계산을 이용할 때, 두 점의 x좌표가 같다면 division by 0 오류가 생길 수 있습니다. 부동소수점의 오차 때문에 계산 결과가 잘못될 수도 있으니, 되도록이면 정수형을 사용하여 계산해 보세요.

- 일직선 상에 있는 점을 볼록 껍질에 추가하면 안 됩니다. 아래의 첫 번째 예제를 참고하세요.

 

2. 점을 정렬할 때

- 기준점을 잡을 때는 y좌표가 작은 순으로, y좌표가 같다면 x좌표가 작은 순으로 정렬해야 합니다.

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