문제 출처 : https://www.acmicpc.net/problem/1002
# 접근 방법
두 터렛 사이에서 감지 할 수 있는 적의 범위 중 두 터렛이 동시에 감지할 수 있는 적의 위치의 개수를 구함
-> 터렛이 감지할 수 있는 범위를 원으로 생각한다면 두 원이 동시에 감지 할 수 있는 적의 위치의 개수는 두 원의 교점이 된다
-> 두 원의 교점을 구하는 프로그램으로 단순화하여 생각할 수 있음
# 두 원의 교점에 대한 경우의 수
1) 무한대 : 두원이 동일
2) 1 : 내접, 외접
3) 2 : 두 원의 거리가 각 원의 반지름의 합 보다 작은 경우
4) 0 : 두 원의 거리가 각 원의 반지름의 합 보다 큰 경우 / 원의 중심이 같고 반지름의 크기가 다른 경우
# 코드
n = int(input())
for i in range(n) :
x1, y1, r1, x2, y2, r2 = map(int, input().split())
d = ((x1 - x2)**2 + (y1 - y2)**2)**(1/2)
if d == 0 and r1 == r2 :
print(-1)
elif d == (r1 + r2) or d == abs(r1-r2) :
print(1)
elif d > abs(r1-r2) and d < (r1 + r2) :
print(2)
else :
print(0)
'Python > 코딩 연습' 카테고리의 다른 글
Python / 알고리즘] 백준 #10845 큐 (0) | 2021.11.05 |
---|---|
Python / 알고리즘] 백준 #4513 (0) | 2021.10.23 |
Python] 파이썬 프로그래밍의 이해(교보문고) 4장 연습문제 (1) | 2019.02.23 |
파이썬(Python)] 시작 (0) | 2019.02.10 |