본문 바로가기

카테고리 없음

[백준 17386번] 선분 교차 1 (Python3)

import sys
input = sys.stdin.readline

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

def eq1(x,y):
  return (x2-x1)*(y-y1)-(y2-y1)*(x-x1)

def eq2(x,y):
  return (x4-x3)*(y-y3)-(y4-y3)*(x-x3)

if eq1(x3,y3)*eq1(x4,y4) < 0 and eq2(x1,y1)*eq2(x2,y2) < 0:
  print(1)
else:
  print(0)

 

class5에 선분교차 2가 있길래 1은 어떤문제인가 궁금해서 풀어보았다.

그냥 말그대로 고등학교때 배우는 부등식의 영역 문제였다.

 

고딩때 배운 부등식의 영역을 기억할 수 있다면 매우 쉬운 문제이다. 직선의 방정식을 잡고, 그 직선 위 영역에 있는 점들은 < 방향 부등식을, 직선 아래 영역에 있는 점들은 > 방향 부등식을 만족시킨다. 예를 들어 y=x 그래프의 위에 있는 점 3,1은 1<3을 만족시킨다.

이를 응용하면 두 선분의 직선의 방정식을 잡고, 각각 상대 점들이 서로의 직선의 방정식에 대해서 두 점이 다른 영역에 있으면 교차한다는 뜻이다.

 

 

오늘의 교훈) 항상 그렇듯이 수학이 중요하다.