https://www.acmicpc.net/problem/1002
처음 푼 것
T = int(input())
for i in range(T) :
x1, y1, r1, x2, y2, r2 = map(int, input().split())
if x1 == x2 and y1 == y2: #두 점이 같을 때
if r1 == r2: #거리 같을 때
print(-1)
else:#거리 다를 때
print(0)
elif (r1+r2)**2 == (x1-x2)**2+(y1-y2)**2 or (r1-r2)**2 == (x1-x2)**2+(y1-y2)**2:
print(1)
elif (r1+r2)**2 > (x1-x2)**2+(y1-y2)**2 and (x1-x2)**2+(y1-y2)**2 > (r1-r2)**2:
print(2)
else : #(r1+r2)**2 < (x1-x2)**2+(y1-y2)**2 or (x1-x2)**2+(y1-y2)**2 < (r1-r2)**2
print(0)
개선
원을 두개 그려서 생각하면 쉬움
import math
sqrt : 루트
abs() : 절댓값 함수
import math
n = int(input())
for _ in range(n):
x1, y1, r1, x2, y2, r2 = map(int, input().split())
d = math.sqrt((x1-x2)**2 + (y1-y2)**2) # 두 점(원)의 거리 distance
if d == 0 and r1 == r2 : # 동심원이고 반지름이 같을 때
print(-1)
elif abs(r1-r2) == d or r1 + r2 == d: # 내접, 외접일 때
print(1)
elif abs(r1-r2) < d < (r1+r2) : # 두 점에서 만날 때
print(2)
else:
print(0) # 내부/외부에 있을 때 (접하지 x)
'study > 알고리즘 문제 풀이' 카테고리의 다른 글
[python] 2293 동전1 (0) | 2022.06.09 |
---|---|
[python] 1026 보물 (0) | 2022.06.09 |
[python] 1085 직사각형에서 탈출 (0) | 2022.06.06 |
[python]1059 좋은구간 - 틀림!! (0) | 2022.06.06 |
[python] 1072 게임 (0) | 2022.06.06 |