알고리즘/백준
[Python] 백준 파이썬 1004 어린 왕자
dding96
2022. 10. 7. 08:43
https://www.acmicpc.net/problem/1004
1004번: 어린 왕자
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주
www.acmicpc.net
# 백준 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 보다 작을때 경계를 지나게 됩니다.