방명록
- [백준] 17387. 선분 교차 2 - 파이썬2024년 11월 05일 18시 47분 44초에 업로드 된 글입니다.작성자: B1NK728x90
- 백준 링크: 17387번: 선분 교차 2
- solved.ac 난이도: 골드 II
- 시간 제한: 0.25 초 (추가 시간 없음)
- 메모리 제한: 512 MB
문제
2차원 좌표 평면 위의 두 선분 L1, L2가 주어졌을 때, 두 선분이 교차하는지 아닌지 구해보자. 한 선분의 끝 점이 다른 선분이나 끝 점 위에 있는 것도 교차하는 것이다.
입력
첫째 줄에 L1의 양 끝 점 x1, y1, x2, y2가, 둘째 줄에 L2의 양 끝 점 x3, y3, x4, y4가 주어진다.
출력
L1과 L2가 교차하면 1, 아니면 0을 출력한다.
코드
import sys input = sys.stdin.readline def solution(): ccw123 = ccw(x1, y1, x2, y2, x3, y3) ccw124 = ccw(x1, y1, x2, y2, x4, y4) ccw341 = ccw(x3, y3, x4, y4, x1, y1) ccw342 = ccw(x3, y3, x4, y4, x2, y2) if ccw123*ccw124 == 0 and ccw341*ccw342 == 0: if mx1 <= mx4 and mx3 <= mx2 and my1 <= my4 and my3 <= my2: return 1 else: if ccw123*ccw124 <= 0 and ccw341*ccw342 <= 0: return 1 return 0 def ccw(x1, y1, x2, y2, x3, y3): return (x2-x1)*(y3-y1) - (y2-y1)*(x3-x1) if __name__ == '__main__': x1, y1, x2, y2 = list(map(int, input().split())) x3, y3, x4, y4 = list(map(int, input().split())) mx1, my1, mx2, my2 = min(x1, x2), min(y1, y2), max(x1, x2), max(y1, y2) mx3, my3, mx4, my4 = min(x3, x4), min(y3, y4), max(x3, x4), max(y3, y4) print(solution())
728x90'백준' 카테고리의 다른 글
[백준] 17386번: 선분 교차 1 - 파이썬 (0) 2024.11.07 [백준] 1753. 최단경로 - 파이썬 (0) 2024.11.06 [백준] 2985. 세 수 - 파이썬 (0) 2024.11.04 [백준] 1202. 보석 도둑 - 파이썬 (0) 2024.11.04 [백준] 21313. 문어 - 파이썬 (0) 2024.11.03 다음글이 없습니다.이전글이 없습니다.댓글