C++/백준 C++

[C/C++] 백준 11758번 CCW

CE : 하랑 2023. 12. 15. 14:05

 

 

 

 

코드

#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);
}