알고리즘/백준
[백준] 1004. 어린왕자 / Python
빙빙
2021. 5. 6. 21:01
원의 방정식 에서 어떤 점을 넣었을 때 반지름^2 보다 작으면 원안에 존재 한다는 점을 이용했다.
시작점 또는 끝점이 원 안에 존재 한다면 cnt += 1을 해준다. 동시에 temp도 += 1 한다.
만약 시작점과 끝점이 같은 원 안에 존재한다면 temp가 2일 것 이므로 cnt -= 2를 해주었다.
import sys
input = sys.stdin.readline
T = int(input()) # 테케
# 행성계 진입/이탈 횟수를 최소화
for tc in range(T):
x1, y1, x2, y2 = map(int, input().split())
n = int(input()) # 행성계의 개수
cnt = 0
for i in range(n):
temp = 0
cx, cy, r = map(int, input().split()) # 행성계의 중점과 반지름
# 행성 원 안에 시작점 or 도착점이 존재한다면 cnt += 1
if (x1-cx)**2 + (y1-cy)**2 < r**2: # 시작점이 원안에 존재
cnt += 1
temp += 1
if (x2-cx)**2+ (y2-cy)**2 < r**2: # 끝점이 원안에 존재
cnt += 1
temp += 1
if temp == 2: # 시작점과 끝점이 같은 원 안에 있을 때는 temp == 2
cnt -= 2
print(cnt)