본문 바로가기

PS/백준

[BOJ] 백준 17386 선분 교차 1 (Swift)

반응형

문제

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

 

17386번: 선분 교차 1

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

www.acmicpc.net

풀이

CCW를 사용해 풀이할 수 있습니다.
CCW를 사용해 반시계방향이면 1, 시계방향이면 -1, 직선일 때 0을 리턴하도록 하였습니다.

다음과 같이 1, 2, 3, 4 라는 점이 있을 때

image


123 의 방향과 124의 방향은 반대입니다.
따라서 두 선분은 교차하고 있다고 할 수 있습니다.

하지만 다음과 같은 상황에서는 123과 124의 방향이 반대인데 교차하지 않고 있습니다.

image

34 선분에 대해서 1과 2에 대한 방향을 검증해주어야 합니다.
341과 342는 같은 방향이므로, 교차하지 않습니다.

따라서 123, 124의 방향이 반대이고 341, 342의 방향도 반대여야지 두 선분이 교차하고 있다고 할 수 있습니다.

이 문제에서는 세 점이 일직선 위에 있는 경우는 없기 때문에 그 점은 고려하지 않았습니다.

소스코드

후기

CCW 문제를 이런식으로 활용할 수도 있구나 하고 느꼈습니다.

반응형