문제 출처
풀이
- d(distance): 터렛1과 터렛2의 거리
- r1, r2: 터렛1과 터렛2 부터 마린까지의 거리
- ip(intersection point): 마린이 존재할 수 있는 경우의 수
풀이에 사용하는 용어는 위와같이 정의하고, 두 터렛의 좌표와 마린과의 거리가 주어졌을때 마린이 존재할 수 있는 위치의 경우는 다음과 같다.
- d가 (r1+r2) 보다 클때
- 두 터렛간의 교점이 없음
- d가 (r1+r2)와 같을때
- 두 터렛간의 교점이 하나 존재
- d가 (r1+r2) 보다 작을때
- 두 터렛의 좌표가 같고 마린까지의 거리도 같을 때
- 한 터렛의 좌표가 다른 터렛의 반경 내부에 있으며 교점이 두 개 존재
- 한 터렛의 좌표가 다른 터렛의 반경 내부에 있으며 교점이 두 개 존재
- 한 터렛의 좌표가 다른 터렛의 반경 내부에 있으며 교점이 없음
위 조건을 모두 고려하면 아래와 같다.
N = int(input())
for _ in range(N):
x1, y1, r1, x2, y2, r2 = map(int, input().split())
distance = ((x1-x2)**2 + (y1-y2)**2)**0.5
if distance > r1 + r2:
ip = 0
elif distance == r1 + r2:
ip = 1
else:
if distance == 0 and r1 == r2:
ip = -1
else:
if distance + min(r1, r2) > max(r1, r2):
ip = 2
elif distance + min(r1, r2) == max(r1, r2):
ip = 1
else:
ip = 0
print(ip)
'백준' 카테고리의 다른 글
[python] 16236. 아기 상어 (0) | 2019.06.29 |
---|---|
[python] 10825. 국영수 (0) | 2019.06.29 |
[python] 1015. 수열정렬 (0) | 2019.06.26 |
[python] 1010. 다리놓기 (0) | 2019.06.26 |
[python] 1004. 어린 왕자 (0) | 2019.06.25 |