코드
#include <iostream>
using namespace std;
// 2차원 평면상에 3개의 점을 p1,p2,p3라고 가정하고, 각각의 좌표는xi,yi 라고 해보면, 외적의 결과를 다음과 같이 계산할 수 있다.
// S=(x1y2+x2y3+x3y1)−(x2y1+x3y2+x1y3)
int result(const int _x1,const int _y1, const int _x2, const int _y2, const int _x3, const int _y3, int* _sum)
{
*_sum=_x1 * _y2 + _x2 * _y3 + _x3 * _y1;
*_sum=*_sum - _y1 * _x2 - _y2 * _x3 - _y3 * _x1;
if (*_sum > 0) { // 반시계 방향
return 1;
}else if(*_sum<0) { // 시계 방향
return -1;
}
else { // 일직선 (평행)
return 0;
}
}
// CCW (Counter Clock Wise)는 2차원 평면 위에 놓인 3개의 점에 대해서 어떤 방향성이 있는지
// 이 방향성 정보를 사용해 선분이 서로 교차하는지 판단
int main()
{
cin.tie(0); // 코드를 작성하면 입출력 속도가 빨라진다. -> C와 C++ 표준 stream의 동기화를 비활성화
cout.tie(0); // C++의 입출력인 cin, cout만 사용하도록 주의해야합니다.
int x1, y1, x2, y2, x3, y3;
int sum = 0;
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
cout<<result(x1, y1, x2, y2, x3, y3, &sum);
}
'C++ > 백준 C++' 카테고리의 다른 글
[C/C++] 백준 4134번 다음 소수 - 참고 (0) | 2023.12.16 |
---|---|
[C/C++] 백준 1312번 소수 (0) | 2023.12.16 |
[C/C++] 백준 2018번 수들의 합 5 - 참고 (0) | 2023.12.14 |
[C/C++] 백준 28701번 세제곱의 합 (0) | 2023.12.13 |
[C/C++] 백준 20920번 영단어 암기는 괴로워 - 참고 (4) | 2023.12.07 |