티스토리 뷰
N = int(input())
data = []
for _ in range(N):
data.append(list(map(int, input().split())))
for i in range(N):
x1 = data[i][0]
y1 = data[i][1]
r1 = data[i][2]
x2 = data[i][3]
y2 = data[i][4]
r2 = data[i][5]
distance = (x2-x1)**2 + (y2-y1)**2
if x1 == x2 and y1 == y2:
# 두 점이 같을 때 예외 처리
# if r1 == 0 and r2 == 0:
# # 그 점밖에 안됨
# result.append(1)
if r1 == r2:
# 무한대의 점 가능
print(-1)
else:
# 불가능
print(0)
else:
# 두 점이 다를 때
if (r1 + r2)**2 < distance:
# 두 원이 아예 안만남
print(0)
elif (r1 + r2)**2 > distance:
# 세가지 경우: 교점 2개, 내접, 내부에 있지만 교점 없음
if distance < (max(r1, r2) - min(r1, r2))**2:
print(0)
elif distance > (max(r1, r2) - min(r1, r2))**2:
print(2)
else:
print(1)
else:
# 외접 한다.
print(1)
아 진짜 이거 푸느라 4시간 날림..실수해서ㅠ
내접하는 경우랑 원이 안에 있긴 한데 안겹치는 경우도 생각해주는게 중요하다.
꿀팁: int랑 float 비교하면서 오류날 수 있으니 아예 sqrt()를 안해주고 푸는것도 좋은 방법이다.
'Algorithm > noj.am' 카테고리의 다른 글
[Python] 여러 변수에 같은 값 할당하기 (0) | 2021.01.01 |
---|---|
[Python] 백준 1065번 - 한수 (0) | 2020.12.31 |
[Python] 백준 1076번 - 저항 (0) | 2020.12.31 |
[Python] 백준 11052번 - 카드 구매하기 (0) | 2020.12.31 |
[Python] 백준 12865번 - 평범한 베낭 (0) | 2020.12.31 |