# 문제상황
처음에는 두 선분에 대한 직선의 방정식을 2개 세워서 직접 교점을 찾으려고 했으나.. 이렇게 풀면 코드가 복잡해집니다.
이 문제는 아래 2166번 문제를 풀 때 쓰였던 '다각형의 넓이 공식'을 이용해서 풀 수 있습니다.
세 좌표를 이용해 구한 다각형의 넓이가 양수이면 반시계, 음수이면 시계 방향이라고 했었죠? 시계 방향이냐, 반시계 방향이냐를 이용하면 네 점이 교차하는 위치에 있는지 아닌지 알 수 있습니다.
# 답
x0, y0, x1, y1 = map(int, input().split())
x2, y2, x3, y3 = map(int, input().split())
a = [(x0, y0), (x1, y1), (x2, y2), (x3, y3)]
def ccw(n1, n2, n3):
return (a[n2][0] - a[n1][0]) * (a[n3][1] - a[n1][1]) - (a[n2][1] - a[n1][1]) * (a[n3][0] - a[n1][0])
if ccw(0, 1, 2) * ccw(0, 1, 3) < 0 and ccw(2, 3, 0) * ccw(2, 3, 1) < 0:
print(1)
else:
print(0)
728x90
반응형
'Algorithm > BaekJoon' 카테고리의 다른 글
(파이썬) 백준 2580번 "스도쿠" (0) | 2022.05.20 |
---|---|
(파이썬) 백준 1654번 "랜선 자르기" (0) | 2022.05.19 |
(파이썬) 백준 2166번 "다각형의 면적" (0) | 2022.05.11 |
(파이썬) 백준 3053번 "택시 기하학" (0) | 2022.05.11 |
(파이썬) 백준 2343번 "기타 레슨" (0) | 2022.04.29 |