From 7c3e6de2038c2edc73642f36c42cfa3c03536580 Mon Sep 17 00:00:00 2001 From: SSUM <116950962+ssum21@users.noreply.github.com> Date: Wed, 5 Mar 2025 14:41:09 +0900 Subject: [PATCH] =?UTF-8?q?[Gold=20II]=20Title:=20=EC=84=A0=EB=B6=84=20?= =?UTF-8?q?=EA=B5=90=EC=B0=A8=202,=20Time:=2036=20ms,=20Memory:=2032412=20?= =?UTF-8?q?KB=20-BaekjoonHub?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 백준/Gold/17387. 선분 교차 2/README.md | 30 +++++++++++++++++++++ 백준/Gold/17387. 선분 교차 2/선분 교차 2.py | 26 ++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 백준/Gold/17387. 선분 교차 2/README.md create mode 100644 백준/Gold/17387. 선분 교차 2/선분 교차 2.py diff --git a/백준/Gold/17387. 선분 교차 2/README.md b/백준/Gold/17387. 선분 교차 2/README.md new file mode 100644 index 0000000..9ed1fa3 --- /dev/null +++ b/백준/Gold/17387. 선분 교차 2/README.md @@ -0,0 +1,30 @@ +# [Gold II] 선분 교차 2 - 17387 + +[문제 링크](https://www.acmicpc.net/problem/17387) + +### 성능 요약 + +메모리: 32412 KB, 시간: 36 ms + +### 분류 + +많은 조건 분기, 기하학, 선분 교차 판정 + +### 제출 일자 + +2025년 3월 5일 14:40:51 + +### 문제 설명 + +

2차원 좌표 평면 위의 두 선분 L1, L2가 주어졌을 때, 두 선분이 교차하는지 아닌지 구해보자. 한 선분의 끝 점이 다른 선분이나 끝 점 위에 있는 것도 교차하는 것이다.

+ +

L1의 양 끝 점은 (x1, y1), (x2, y2), L2의 양 끝 점은 (x3, y3), (x4, y4)이다.

+ +### 입력 + +

첫째 줄에 L1의 양 끝 점 x1, y1, x2, y2가, 둘째 줄에 L2의 양 끝 점 x3, y3, x4, y4가 주어진다.

+ +### 출력 + +

L1과 L2가 교차하면 1, 아니면 0을 출력한다.

+ diff --git a/백준/Gold/17387. 선분 교차 2/선분 교차 2.py b/백준/Gold/17387. 선분 교차 2/선분 교차 2.py new file mode 100644 index 0000000..46e81bb --- /dev/null +++ b/백준/Gold/17387. 선분 교차 2/선분 교차 2.py @@ -0,0 +1,26 @@ +import sys + +input = sys.stdin.readline + +x1, y1, x2, y2 = map(int, input().split()) +x3, y3, x4, y4 = map(int, input().split()) + +ccw_a_1 = (x1 * y3 + x3 *y4+ x4*y1)-(x3*y1+x4*y3+x1*y4) +ccw_a_2 = (x2*y3+x3*y4+x4*y2) - (x3*y2+x4*y3+x2*y4) + +ccw_a = ccw_a_1 * ccw_a_2 + +ccw_b_1 = (x3 * y1 + x1 *y2+ x2*y3)-(x1*y3+x2*y1+x3*y2) +ccw_b_2 = (x4 * y1 + x1 *y2+ x2*y4)-(x1*y4+x2*y1+x4*y2) + +ccw_b = ccw_b_1 * ccw_b_2 + +if(ccw_a==0 and ccw_b==0): + if min(x1, x2) <= max(x3, x4) and min(x3, x4) <= max(x1, x2) and min(y1, y2)<= max(y3, y4) and min(y3,y4) <= max(y1, y2): + print(1) + else: + print(0) +elif(ccw_a<=0 and ccw_b<=0): + print(1) +else: + print(0) \ No newline at end of file