-
[Algorithm] CCW알고리즘/백준 2024. 4. 6. 23:13
Counter Clock Wise
점 A, B, C가 있을 때 3개의 점 A, B, C를 차례로 이은 직선의 모양을 알고자 할 때 유용한 기하 알고리즘이다.
세 점에 대해 다음의 3 가지 모양이 존재할 수 있다.
귀찮으니까 코드로 보자.
AB와 BC 벡터를 구하고, 벡터를 Cross (외적) 연산하면 세 점 A, B, C의 관계를 알 수 있다.
반시계 방향 : 음수
시계 방향 : 양수
직선 : 0
#include <iostream> using namespace std; struct xy { int y, x; }; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); xy A, B, C; cin >> A.x >> A.y >> B.x >> B.y >> C.x >> C.y; xy AB = { B.y - A.y, B.x - A.x }; //cout << AB.y << AB.x <<"\n"; xy BC = { C.y - B.y, C.x - B.x }; //cout << BC.y << BC.x <<"\n"; int r = AB.x* BC.y - AB.y * BC.x; //cout << r; if (r > 0)cout << 1; else if (r < 0) cout << -1; else cout << 0; return 0; }
https://www.acmicpc.net/problem/11758
'알고리즘 > 백준' 카테고리의 다른 글
최근 풀면서 재미있거나 기억나는 문제 모음. (0) 2024.04.15 [선분 교차 판정] 선분 교차 2 (0) 2024.04.06 세그먼트 트리 시리즈 (1) 2024.03.13 [백준] 30826번 그 긴 수 (2) 2024.02.09 [BFS] Priority Queue 활용 BFS (1) 2024.02.08