알고리즘
[백준 파이썬 1002] 백준 python 터렛 1002번
새우하이
2020. 11. 15. 21:36
x1,y1,r1,x2,y2,r3 으로 상대편 마린의 위치를 계산하는 문제임.
그림으로 그려보니 두 원의 접점을 구하는 문제임이 보였다.
두 원의 위치관계, 내접, 외접
위치관계 또 나오네요. 이번에는 두 원의 위치관계에요. 위치관계 마지막이니까 정신 바짝 차리고 따라오세요. 원과 직선의 위치관계, 원의 할선과 접선, 접점에서 했던 것처럼 두 원이 어떤 관
mathbang.net
두 원이 2점에서 만나는 경우, 1점에서 만나는경우와 만나지 않는 경우 그리고 겹쳐서 무한대일 경우가 있을 것이다. 출력 부분을 보면 무한대일 경우 -1 을 출력하라고 했다.
import sys
T = int(sys.stdin.readline())
for i in range(T):
x1, y1, r1, x2, y2, r2 = map(int, (
sys.stdin.readline().split(' ')))
distance = ((x2-x1)**2 + (y2-y1)**2)**0.5
if x1 == x2 and y1 == y2:
if r1 == r2:
print(-1)
else:
print(0)
continue
if r1+r2 == distance or abs(r2-r1) == distance:
print(1)
elif r1+r2 < distance or distance < abs(r2-r1):
print(0)
else:
print(2)
두 원의 중심사이의 거리를 distance에 저장했다.
그리고 두 원의 중심점이 같은경우 중 반지름의 길이가 같으면 무한대로 만나기 때문에 -1을 출력하고 아니라면 만나지 않을 것이다.
continue로 아래의 코드를 건너 뛴다.
이 경우가 아니라면 두 원이 한점에서 만나거나(외접 ,내접) 만나지 않거나(원의 내부에 있거나, 외부에 있거나), 두 점에서 만나는 경우에 대해 출력해주면 된다.