BOJ
백준(BOJ) 17386 선분 교차 1(Python)
juLeena
2022. 7. 9. 18:37
먼저 L1에서 L2의 두 점에 대해 CCW를 해본다. 그 때 두 점의 회전 방향이 같으면 두 선분은 교차하지 않지만, 두 점의 회전 방향이 다르면 두 선분이 교차하는 것이 아니라 CCW를 L2에서 L1의 두 점에 대해 해줘야한다. 그 때 두 점의 회전 방향이 같으면 두 선분은 교차하지 않는다.
코드는 다음과 같다.
x1,y1,x2,y2=map(int,input().split())
x3,y3,x4,y4=map(int,input().split())
a=(x3-x2)*(y2-y1)
b=(y3-y2)*(x2-x1)
c=(x4-x2)*(y2-y1)
d=(y4-y2)*(x2-x1)
k1=0
k2=0
if a>b:
k1=-1
elif a<b:
k1=1
if c>d:
k2=-1
elif c<d:
k2=1
if k1==k2:
print(0)
else:
k3=0
k4=0
e=(x1-x3)*(y4-y3)
f=(y1-y3)*(x4-x3)
g=(x2-x3)*(y4-y3)
h=(y2-y3)*(x4-x3)
if e>f:
k3=-1
elif e<f:
k3=1
if g>h:
k4=-1
elif g<h:
k4=1
if k3==k4:
print(0)
else:
print(1)
함수로 코드를 짰다면 훨씬 코드가 깔끔했겠지만, 귀찮아서 생략했다.