Algorithm/BaekJoon
(파이썬) 백준 17386번 "선분 교차 1"
innit
2022. 5. 12. 11:26
# 문제상황
처음에는 두 선분에 대한 직선의 방정식을 2개 세워서 직접 교점을 찾으려고 했으나.. 이렇게 풀면 코드가 복잡해집니다.
이 문제는 아래 2166번 문제를 풀 때 쓰였던 '다각형의 넓이 공식'을 이용해서 풀 수 있습니다.
세 좌표를 이용해 구한 다각형의 넓이가 양수이면 반시계, 음수이면 시계 방향이라고 했었죠? 시계 방향이냐, 반시계 방향이냐를 이용하면 네 점이 교차하는 위치에 있는지 아닌지 알 수 있습니다.
(파이썬) 백준 2166번 "다각형의 면적"
# 문제상황 다각형의 좌표들을 모두 알고 있을 때, 다각형 넓이를 쉽게 구할 수 있는 공식이 있습니다. 고등학교 때 교육과정에는 없는 내용이지만 수업시간에 '이런 공식도 있습니다~' 하고 흘
beluga9.tistory.com
# 답
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
반응형