본문 바로가기
728x90

기하3

[python] 백준 9063 대지 https://www.acmicpc.net/problem/9063 9063번: 대지 첫째 줄에는 점의 개수 N (1 ≤ N ≤ 100,000) 이 주어진다. 이어지는 N 줄에는 각 점의 좌표가 두 개의 정수로 한 줄에 하나씩 주어진다. 각각의 좌표는 -10,000 이상 10,000 이하의 정수이다. www.acmicpc.net 문제 해결 브론즈 기하문제인 만큼 극히 제한적인 조건( 남북, 동서 방향으로 평행한 직사각형 모양)이 붙었다. 따라서 X축과 Y축으로 나누어 각 점들의 좌표를 보고 가장 큰 X좌표, 가장 작은 X좌표, 가장 큰 Y좌표 가장 작은 Y좌표를 가져와서 (가장 큰 X좌표-가장 작은 X좌표) * (가장 큰 Y좌표 - 가장 작은 Y좌표)를 구하면 된다. CODE import sys input.. 2023. 11. 16.
[python] 백준 2022 사다리 https://www.acmicpc.net/problem/2022 2022번: 사다리 첫째 줄에 차례대로 x, y, c에 해당하는 양의 실수 세 개가 입력된다. 수는 소수점 여섯째 자리까지 주어질 수 있으며, 3,000,000,000보다 작거나 같다. www.acmicpc.net 문제 해결 다음과 같이 $h_{1}$, $h_{2}$, $w$, $w_{1}$, $w_{2}$를 정의하자. $w_{1} : c = w: h_{2}$와 $w_{2}:c = w: h_{1}$임을 이용해서 c의 값을 $h_{1}$과 $h_{2}$의 값으로 나타낼 수 있다. $ w = w_{1} + w_{2} = \frac{cw}{h_{2}} + \frac{cw}{h_{1}} = cw \frac {h_{1}+h_{2}} {h_{1}h_.. 2023. 11. 12.
[python] 백준 17386 선분 교차 1 https://www.acmicpc.net/problem/17386 17386번: 선분 교차 1 첫째 줄에 L1의 양 끝 점 x1, y1, x2, y2가, 둘째 줄에 L2의 양 끝 점 x3, y3, x4, y4가 주어진다. 세 점이 일직선 위에 있는 경우는 없다. www.acmicpc.net 문제 해결 CCW를 사용하는 문제 CCW는 외적을 이야기 한다. 우선 두 직선이 일직선 위에 있는 경우가 없으므로 평행하거나 일치, 여러점이 겹치는 것을 생각할 필요가 없다. 따라서 L2의 끝 두점 (x3,y3), (x4,y4)와 L1의 두 끝점 (x1,y1), (x2,y2)을 CCW로 계산해서 양수가 하나라도 나오면 교차를 하지 않는다. CODE import sys input = sys.stdin.readline .. 2023. 8. 25.
728x90