백준 17386 - 선분 교차 1 (파이썬)

Updated:

CCW 공식을 사용하면 풀 수 있습니다.
한 선분의 두 점과 나머지 선분의 점 한 곳의 좌표를 각각 CCW
알고리즘을 사용해 계산하여 곱하면 다른 방향인 경우 -1이 나옵니다.

import sys

input = sys.stdin.readline

def CCW(p1, p2, p3):
    a = p1[0] * p2[1] + p2[0] * p3[1] + p3[0] * p1[1]
    b = p1[1] * p2[0] + p2[1] * p3[0] + p3[1] * p1[0]
    
    if a > b:
        return 1
    elif a < b:
        return -1
    else:
        return 0
    
x1, y1, x2, y2 = map(int, input().split())
x3, y3, x4, y4 = map(int, input().split())

P1 = [x1, y1]
P2 = [x2, y2]
P3 = [x3, y3]
P4 = [x4, y4]

tmp1 = CCW(P1, P2, P3) * CCW(P1, P2, P4)
tmp2 = CCW(P3, P4, P1) * CCW(P3, P4, P2)

if tmp1 == -1 and tmp2 == -1:
    print(1)
else:
    print(0)

Categories:

Updated: