볼록 껍질 (컨벡스 헐, Convex Hull) 알고리즘
정의 주어진 집합의 볼록 껍질은 해당 집합을 포함하는 가장 작은 볼록 다각형을 의미한다. 원리 볼록 껍질을 구하는 알고리즘은 여럿 있는데, 그 중 하나인 그레이엄 스캔(Graham Scan)을 소개한다. CCW 알고리즘(https://monogatary.tistory.com/55)을 응용한 방식이며, $O(n\log{n})$ 의 시간 복잡도를 가진다. 주어진 좌표들을 정렬한 다음, 해당 배열을 순회한다. 스택을 생성하고, 배열을 순회하면서 배열 내의 좌표 c에 대하여 다음 과정을 반복한다. 스택에 원소가 2개 이상 존재할 경우, 스택의 뒤에서 2번째 원소를 a, 마지막 원소를 b라 하자. 좌표 a,b,c의 ccw가 양수거나, 스택의 원소가 2개 미만이 남을 때 까지 스택의 마지막 원소를 제거한다. 만약 ..