본문 바로가기

PS 짬통/골드

17386 선분 교차 1

https://www.acmicpc.net/problem/17386

 

17386번: 선분 교차 1

첫째 줄에 L1의 양 끝 점 x1, y1, x2, y2가, 둘째 줄에 L2의 양 끝 점 x3, y3, x4, y4가 주어진다. 세 점이 일직선 위에 있는 경우는 없다.

www.acmicpc.net

 

CCW를 안쓰고 풀 수 있고, 나는 안쓰고 풀었다 일단

근데 그 과정이 굉장히 힘들고 험난하다

그리고 결론적으로 다음 문제인 17387 선분 교차 2를 풀기 굉장히 어려울 것이다

 

지랄말고 CCW로 풀자

 

방법론

- 한 선분 AB, 다른 선분 CD 가 있다고 하자

 

- ABC에 대해서 CCW를 돌리고, ABD에 대해서 CCW를 돌려서 그 결과값을 곱한 값이 음수라면, 선분 AB를 연장한 직선이 좌표평면을 두 구간으로 분할 할 때, C와 D는 각각 다른 영역에 있다는 것이다.

 

- CDA에 대해서 CCW를 돌리고, CDB에 대해서 CCW를 돌려서 또 그걸 곱한 값이 음수면, 선분 CD를 연장한 직선이 좌표평면을 두 구간을 분할 할 때, A와 B는 각각 다른 영역에 있다는 것이다.

 

- 두 선분이 교차했다는건, 아무튼 CCW( A B C) * CCW (A B D) < 0 , CCW (C D A) * CCW (C D B) < 0 를 동시에 만족한다는 뜻이다. ( 이 문제 한정해서 0 미만이다. 다음 문제에서는 여러 조건이 더 추가된다. )

 

 

https://github.com/KimximyaFan/Random-Defense/blob/main/C0057.java

'PS 짬통 > 골드' 카테고리의 다른 글

17387 선분 교차 2  (2) 2023.10.24
25308 방사형 그래프  (2) 2023.10.24
1949 우수 마을  (0) 2023.10.20
2213 트리의 독립집합  (1) 2023.10.19
2533 사회망 서비스(SNS)  (0) 2023.10.16