온라인저지
[BOJ] 11758번: CCW
plzfday
2018. 7. 27. 01:11
https://www.acmicpc.net/problem/11758
문제 그대로 CCW를 구현하는 문제다. 나는 CCW가 뭐 대단히 어려운 거라고 생각했고 그로 인해 좀 꺼려졌는데 이번에 기회가 있어서 다시 보니 그냥 아마 중학교 3학년 때 삼각형 넓이 구하는 공식 해서 '신발끈 공식'을 배운 적이 있었는데 그거였다. 물론 증명은 못하지만... 쓸 수는 있어서 기쁘다.
넓이가 양수면 반시계 방향, 음수면 시계 방향, 0이면 일직선(세 점이)인 것이다. 외우기도 쉬운게 CCW 뜻 자체가 counter clockwise: 반시계이기 때문에 ccw값이 양수면 반시계라는 게 외우기 쉽다.
#include <cstdio>
int ccw(int x1, int y1, int x2, int y2, int x3, int y3)
{
int temp = x1 * y2 + x2 * y3 + x3 * y1;
temp -= (x2 * y1 + x3 * y2 + x1 * y3);
if (temp > 0)
return 1;
else if (temp < 0)
return -1;
return 0;
}
int main()
{
int x[3], y[3];
for (int i = 0; i < 3; ++i)
scanf("%d %d", &x[i], &y[i]);
printf("%d\n", ccw(x[0], y[0], x[1], y[1], x[2], y[2]));
return 0;
}