본문 바로가기
TIL - 프로그래밍/Python 알고리즘

[백준] 11758. CCW - Python

by chaemj97 2023. 5. 3.
728x90

https://www.acmicpc.net/problem/11758

 

11758번: CCW

첫째 줄에 P1의 (x1, y1), 둘째 줄에 P2의 (x2, y2), 셋째 줄에 P3의 (x3, y3)가 주어진다. (-10,000 ≤ x1, y1, x2, y2, x3, y3 ≤ 10,000) 모든 좌표는 정수이다. P1, P2, P3의 좌표는 서로 다르다.

www.acmicpc.net


 

[알고리즘] CCW (선분 교차 판별)

CCW : Counter Clock Wise 3개의 점 A, B, C가 있을 때 이 점 3개를 이은 직선의 방향을 알고자 할 때 유용한 기하 알고리즘 3가지 경우의 수 외적을 통하여 구할 수 있다. 외적의 결과가 음수면 시계 방향

chaemi720.tistory.com

 

  • 코드
import sys
input = sys.stdin.readline

# P1, P2, P3
x1,y1 = map(int,input().split())
x2,y2 = map(int,input().split())
x3,y3 = map(int,input().split())

# P1P2과 P1P3의 외적 구하기
P1P2 = (x1-x2,y1-y2)
P1P3 = (x1-x3,y1-y3)

# 외적
cross = P1P2[0]*P1P3[1] - P1P2[1]*P1P3[0]

# 일직선?
if cross == 0:
    print(0)
# 반시계?
elif cross > 0:
    print(1)
# 시계?
else:
    print(-1)
728x90
반응형

댓글