Algorithms
백준 1002. 터렛
Brian Go
2022. 6. 9. 02:27
오랜만에 원의 방정식 생각하니까 어질어질하네,,
처음에는 단순히 모든 xy에서 훑으면서 양쪽 원의 방정식을 만족하는 해의 개수를 세려 했으나 모든 해가 정수는 아니기에 실패하고, 그 다음에서야 원의 거리를 이용할 방법을 생각했다.
from math import sqrt
n = int(input())
for i in range(n):
x1, y1, r1, x2, y2, r2 = map(int, input().split())
dis = sqrt((x1 - x2)**2 + (y1 - y2)**2)
if dis == 0 and r1 == r2:
print(-1)
elif abs(r1 - r2) == dis or r1 + r2 == dis:
print(1)
elif abs(r1 - r2) < dis < r1 + r2:
print(2)
else:
print(0)
원 사이에 거리를 구해서 동위원이면 해가 무한하므로 -1을 출력하고, 반지름의 차이가 거리와 같거나(내접) 반지름끼리 더한것이 거리와 같으면 (외접) 1을 출력.
거리가 반지름의 차보다는 크고 합보다는 작을 때, 두 원은 교차하므로 2개의 교점을 가진다.

사진 설명을 입력하세요.