https://www.acmicpc.net/problem/1002
한 명의 터렛 위치를 중심으로 하고 적 마린까지의 거리를 반지름으로 이루어진 원으로 설정하여 문제를 풀면 됩니다.
2개의 원이 주어지게 되는데 여기서 각 원의 교점의 개수를 구하면 문제를 풀 수 있습니다.
두 원의 중심 사이 거리를 구하여 원의 반지름을 서로 비교해 교점을 개수를 판별할 수 있습니다.
두 원의 중심 사이를 구하는 방법은 x축끼리의 차와 y축끼리의 차를 각각 제곱하여 더해준 후 루트를 씌우면 구할 수 있습니다.
dis = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
이제 이 길이를 갖고 교점의 개수를 판별하면 됩니다.
우선 두 원의 중심이 같고 반지름이 같을 경우 == 무한대
if dis == 0 and r1 == r2:
print(-1)
외접 or 내접인 경우 == 1개
elif dis == r1 + r2 or dis == abs(r2 - r1):
print(1)
서로 다른 두 점에서 만나는 경우 == 2개
elif abs(r2 - r1) < dis < (r1 + r2):
print(2)
두 원이 떨어지거나, 한 원이 다른 원 안에 있을 경우, 중심은 같지만 반지름이 다를 경우
else:
print(0)
import sys, math
input = sys.stdin.readline
for tc in range(int(input())):
x1, y1, r1, x2, y2, r2 = map(int,input().split())
dis = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
if dis == 0 and r1 == r2:
print(-1)
elif dis == r1 + r2 or dis == abs(r2 - r1):
print(1)
elif abs(r2 - r1) < dis < (r1 + r2):
print(2)
else:
print(0)