var P = [[Int]]()
for _ in 0..<3 {
let input = readLine()!.split(separator: " ").map { Int(String($0))! }
P.append(input)
}
let ccw = (P[0][0] * P[1][1] + P[1][0] * P[2][1] + P[2][0] * P[0][1]) -
(P[1][0] * P[0][1] + P[2][0] * P[1][1] + P[0][0] * P[2][1])
if ccw > 0 {
print("1")
} else if ccw < 0 {
print("-1")
} else {
print("0")
}
CCW 이론을 구현하는 기본적인 문제이다.
CCW(Couter-clockwise)는 평면상의 3개의 점과 관련된 점들의 위치 관계를 판단하는 알고리즘이다.
CCW 공식
CCW = (X1Y2 + X2Y3 + X3Y1) - (X2Y1 + X3Y2 + X1Y3)
CCW는 부호에 따라 다음과 같은 3가지 의미를 가진다.
또한 CCW의 결괏값의 절댓값을 2로 나누면 세 점으로 이뤄진 삼각형의 넓이를 나타낸다.