https://www.acmicpc.net/problem/1004
# 백준 1004 어린 왕자
import math
t = int(input())
for i in range(t):
x1, y1, x2, y2 = map(int,input().split())
n = int(input())
count = 0
for j in range(n):
cx, cy, r = map(int, input().split())
d1 = math.sqrt((x1-cx) ** 2 + (y1-cy) ** 2)
d2 = math.sqrt((x2-cx) ** 2 + (y2-cy) ** 2)
if d1 < r and d2 > r:
count += 1
elif d1 > r and d2 < r:
count += 1
elif d1 < r and d2 < r:
pass
elif d1 > r and d2 > r:
pass
print(count)
행성의 경계를 지나는 경우는 위 그림과 같은 경우밖에 없습니다.
출발점과 도착점 각각 원의 중심과의 거리 d1, d2를 구하고
d1 또는 d2 중 하나만 원의 반지름 r 보다 작을때 경계를 지나게 됩니다.
'알고리즘 > 백준' 카테고리의 다른 글
[Python] 백준 파이썬 1037 약수 (0) | 2022.10.09 |
---|---|
[Python] 백준 파이썬 1358 하키 (0) | 2022.10.08 |
[Python] 백준 파이썬 1002 터렛 (0) | 2022.10.06 |
[Python] 백준 파이썬 3053 택시 기하학 (0) | 2022.10.05 |
[Python] 백준 파이썬 2477 참외밭 (1) | 2022.10.04 |