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개의 교점을 가진다.

사진 삭제

사진 설명을 입력하세요.