💡문제접근
- 처음에 좌표(x1, y1)와 좌표(x2, y2) 사이의 거리 distance를 구할 때
math.sqrt()
를 사용한 다음에 int()
를 사용해서 정수형으로 변환했는데 이 방법이 문제가 되었다. R을 int단위로 버림하는 순간 더 이상 거리의 개념으로 볼 수 없기 때문이다.
- 기하학에 관련된 문제로 여러 가지 경우에 대한 답을 미리 정해놓고 구했다.
①. 두 원이 외접하는 경우 : 접점이 1개 생기므로 1을 출력
②. 두 원이 내접하는 경우 : 접점이 1개 생기므로 1을 출력
③. 두 원의 중심 사이의 거리가 0이고 두 원의 반지름이 같은 경우(즉, 동심원의 경우) : 접점은 무한개가 생기므로 -1을 출력
④. 두 원이 접하지 않고 서로 떨어져 있는 경우 : 접점이 생기지 않으므로 0을 출력
⑤. 한 원이 다른 원의 내부에 있지만 큰 원과 접하지 않은 경우 : 접점이 생기지 않으므로 0을 출력
⑥. 위의 5가지 경우를 제외하면 나머지 경우 2를 출력
💡코드(메모리 : 33376KB, 시간 : 40ms)
import sys
import math
input = sys.stdin.readline
T = int(input())
for _ in range(T):
x1, y1, r1, x2, y2, r2 = map(int, input().strip().split())
distance = math.sqrt((x1-x2)**2 + (y1-y2)**2)
if abs(r1-r2) < distance < abs(r1+r2):
print(2)
elif distance == 0 and r1 == r2:
print(-1)
elif distance == r1 + r2:
print(1)
elif distance == abs(r1 - r2):
print(1)
else:
print(0)
💡소요시간 : 17m