PS

[백준/Python] (G2) 선분 교차 2 - 17387

MSHUN 2023. 11. 8.
반응형

Baekjoon Online Judge의 17387 선분 교차 2 문제의 Python풀이입니다.

 

17387번: 선분 교차 2

첫째 줄에 L1의 양 끝 점 x1, y1, x2, y2가, 둘째 줄에 L2의 양 끝 점 x3, y3, x4, y4가 주어진다.

www.acmicpc.net

💻코드

def ccw(ax, ay, bx, by, cx, cy):
    return (ax*by + bx*cy + cx*ay) - (bx*ay + cx*by + ax*cy)


x1, y1, x2, y2 = map(int, input().split())
x3, y3, x4, y4 = map(int, input().split())

ccw123 = ccw(x1, y1, x2, y2, x3, y3)
ccw124 = ccw(x1, y1, x2, y2, x4, y4)
ccw341 = ccw(x3, y3, x4, y4, x1, y1)
ccw342 = ccw(x3, y3, x4, y4, x2, y2)

if ccw123 * ccw124 == 0 and ccw341 * ccw342 == 0:
    if (min(x1, x2) <= max(x3, x4) and max(x1, x2) >= min(x3, x4)) and (min(y1, y2) <= max(y3, y4) and max(y1, y2) >= min(y3, y4)):
        print(1)
    else:
        print(0)
else:
    print(1 if ccw123 * ccw124 <= 0 and ccw341 * ccw342 <= 0 else 0)

🧠풀이

선분 교차 1에서 조건이 추가되었다. 풀이는 알아서 검색해보자.

🤔느낀 점

조건을 잘 읽자.

Baekjoon Online Judge

반응형

댓글