본문 바로가기
Algorithms

백준 1002. 터렛

by Brian Go 2022. 6. 9.

오랜만에 원의 방정식 생각하니까 어질어질하네,,

처음에는 단순히 모든 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개의 교점을 가진다.

사진 삭제

사진 설명을 입력하세요.

 

 

'Algorithms' 카테고리의 다른 글

백준 1358. 하키  (0) 2022.06.09
백준 1004. 어린 왕자  (0) 2022.06.09
백준 3053. 택시 기하학  (0) 2022.06.09
백준 2477. 참외밭  (0) 2022.06.09
백준 3034. 앵그리 창영  (0) 2022.06.09

댓글