https://www.acmicpc.net/problem/11758

https://velog.velcdn.com/images/min_gi1123/post/55c3716b-ef99-4a8f-993d-60ba2edbdd07/image.png

https://velog.velcdn.com/images/min_gi1123/post/3e6c14dc-24d2-43a5-b07e-1c11c3d0c988/image.png

CCW / Counter Clockwise

CCW란?

평면 위에 놓여진 세 점의 방향관계를 구할 수 있는 알고리즘

https://velog.velcdn.com/images/min_gi1123/post/d1ad42e3-2257-4148-bd26-643baeb9a50d/image.png

벡터의 외적

https://velog.velcdn.com/images/min_gi1123/post/925b84b3-7bb6-4d8e-8d07-2f9f24ad52b9/image.png

외적의 결과로 외적에 쓰인 두 벡터와 동시에 수직인 벡터를 구할 수 있다. 이 수직벡터의 방향으로 세 점의 방향을 판단 할 것이다. +) 외적은 교환법칙 성립 X (크기는 같음) +) 단위벡터 : 길이가 1인 벡터

https://velog.velcdn.com/images/min_gi1123/post/7d746b9f-d680-4aab-af7c-4814028a7af6/image.png

방향은 오른손 법칙을 따른다.

좀 더 부가적인 설명을 해보자면, 두 벡터의 결과를 행렬식으로 나타내어보자.

https://velog.velcdn.com/images/min_gi1123/post/5b36b497-4b61-4c40-9466-6295136c5764/image.png

여기서 S의 부호에 따라서 세가지로 나눈다.

구조체 구현

struct pos {
    int x,y;
};

간단하게 x,y좌표로 나타내었다. 매번 pair만 썼는데 구조체 깔끔하고 좋은 듯.