백준 - CCW (11758)

Seoyoung Lee·2023년 3월 17일
0

알고리즘

목록 보기
92/104
post-thumbnail
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?

CCW(Couter-clockwise)는 평면상의 3개의 점과 관련된 점들의 위치 관계를 판단하는 알고리즘이다.

CCW 공식
CCW = (X1Y2 + X2Y3 + X3Y1) - (X2Y1 + X3Y2 + X1Y3)

CCW는 부호에 따라 다음과 같은 3가지 의미를 가진다.

  • CCW 결과 < 0: 시계 방향
  • CCW 결과 == 0: 일직선
  • CCW 결과 > 0: 반시계 방향

또한 CCW의 결괏값의 절댓값을 2로 나누면 세 점으로 이뤄진 삼각형의 넓이를 나타낸다.

profile
나의 내일은 파래 🐳

0개의 댓글