반응형
문제
https://www.acmicpc.net/problem/20149
풀이
https://dev-mandos.tistory.com/314
이 문제에서 교점을 구하는 부분이 추가된 문제입니다.
먼저 교차하는지 확인을 해주고, 교차한다면 교점을 구해야합니다.
두 선분이 평행이라면, 교점이 무수히 많을수도 있고, 하나일 수도 있습니다.
하나인 경우는, 두 선분의 시작점과 끝 점이 만날 때 일 것입니다.
교점을 구하는 수식은 다음과 같습니다.
$(x, y) = (\frac{(x_1y_2-y_1x_2)(x_3-x_4)-(x_1-x_2)(x_3y_4-y_3x_4)}{(x_1-x_2)(y_3-y_4)-(y_1-y_2)(x_3-x_4)},\frac{(x_1y_2-y_1x_2)(y_3-y_4)-(y_1-y_2)(x_3y_4-y_3x_4)}{(x_1-x_2)(y_3-y_4)-(y_1-y_2)(x_3-x_4)})$
여기서 $(x_1-x_2)(y_3-y_4)-(y_1-y_2)(x_3-x_4) = 0$이라면 두 직선은 평행이거나 일치합니다.
따라서, 두 선분이 교차하는지 확인하고 두 선분이 평행이거나 일치한다면 두 선분의 시작점이 끝 점과 만나는 지 확인해줍시다.
시작점과 끝 점이 일치한다면, 둘 중 아무 좌표나 출력해주면 됩니다.
그냥 교차한다면 위의 식을 사용해서 좌표를 구해줍시다.
소스코드
후기
수학적인 지식이 있어야 풀 수 있었던 문제였습니다.
저도 몰라서.. 블로그 글을 참고하여 풀 수 있었습니다.
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 9205 맥주 마시면서 걸어가기 (Swift) (3) | 2023.05.26 |
---|---|
[BOJ] 백준 2162 선분 그룹 (Swift) (0) | 2023.05.25 |
[BOJ] 백준 17387 선분 교차 2 (Swift) (0) | 2023.05.24 |
[BOJ] 백준 17386 선분 교차 1 (Swift) (0) | 2023.05.24 |
[BOJ] 백준 25308 방사형 그래프 (Swift) (0) | 2023.05.24 |