x1,y1,r1,x2,y2,r3 으로 상대편 마린의 위치를 계산하는 문제임.
그림으로 그려보니 두 원의 접점을 구하는 문제임이 보였다.
두 원이 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로 아래의 코드를 건너 뛴다.
이 경우가 아니라면 두 원이 한점에서 만나거나(외접 ,내접) 만나지 않거나(원의 내부에 있거나, 외부에 있거나), 두 점에서 만나는 경우에 대해 출력해주면 된다.
'알고리즘' 카테고리의 다른 글
[백준 1931 파이썬] 회의실 배정 (0) | 2021.03.10 |
---|---|
[백준 11047] 파이썬 동전 0 (1) | 2021.03.07 |
백준 1110번 파이썬 : 더하기 사이클 (0) | 2020.08.14 |
백준 10952번 파이썬 (python) : A+B - 4 (0) | 2020.08.14 |
백준 10952번 파이썬 (python) : A+B - 5 (0) | 2020.08.14 |
댓글