문제 풀이
이 문제는 두 원의 교점의 개수를 찾는 문제입니다. 두 원의 교점의 개수는 두 원의 중심 사이의 거리와 각 원의 반지름에 따라 달라집니다.
먼저, 두 원의 중심 사이의 거리를 계산합니다. 이 거리는 두 점 사이의 거리 공식을 사용하여 계산할 수 있습니다.
다음으로, 이 거리를 각 원의 반지름과 비교합니다.
두 원의 중심이 같고 반지름이 같다면, 두 원은 완전히 겹치므로 류재명이 있을 수 있는 위치의 개수는 무한대입니다. 이 경우 -1을 반환합니다.
두 원의 중심 사이의 거리가 두 원의 반지름의 합보다 작고, 두 원의 반지름 차보다 크다면, 두 원은 서로 두 점에서 만납니다. 이 경우 2를 반환합니다.
두 원의 중심 사이의 거리가 두 원의 반지름의 합과 같거나, 두 원의 반지름 차와 같다면, 두 원은 서로 한 점에서 만납니다. 이 경우 1을 반환합니다.
그 외의 경우, 즉 두 원의 중심 사이의 거리가 두 원의 반지름의 합보다 크거나, 두 원의 반지름 차보다 작다면, 두 원은 서로 만나지 않습니다. 이 경우 0을 반환합니다.
이렇게 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력하면 문제를 해결할 수 있습니다.
코드
import math
def find_location(t):
x1, y1, r1, x2, y2, r2 = t
distance = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
if distance == 0 and r1 == r2:
return -1
elif abs(r1 - r2) < distance < (r1 + r2):
return 2
elif distance == r1 + r2 or distance == abs(r1 - r2):
return 1
else:
return 0
test_cases = int(input())
for _ in range(test_cases):
t = list(map(int, input().split()))
print(find_location(t))