[터렛] : https://www.acmicpc.net/problem/1002
문제를 읽으면서 위치를 어떻게 예상하는지 좌표를 직접 그리면서 생각해보았다. 주어진 두 거리를 이용하는 것은 알겠는데 위치에 대한 정보를 어떻게 알 수 있을까에 대한 고민을 했던 것 같다. 구글링을 통해 거리에 대한 원을 그려 만나는 교점이 위치의 개수라는 것을 알아냈다.
t = int(input())
result = 0
for i in range(t):
x1, y1, r1, x2, y2, r2 = map(int,input().split())
m_x = x1 - x2
m_y = y1 - y2
d = (m_x**2 + m_y**2)**0.5
if x1 == x2 and y1 == y2:
if r1 == r2:
result = -1
else:
result = 0
if r1+r2 < d or r1-r2 > d:
result = 0
elif r1+r2 == d or r1-r2 == d:
result = 1
elif r1-r2 < d < r1+r2 and x1 != x2 or y1 != y2:
result = 2
print(result)
두 원의 중심사이의 거리를 구한다음 반지름과 중심거리의 관계를 조건으로 쓰면서 두 원이 만나는 교점을 반환해준다.
해결과정에서 예외적으로 조건을 두가지를 다 만족하여 결과값이 두개로 나왔는데, 이를 매끄럽게 해결하진 못한 것 같다. 더 나은 조건이 있다면 수정할 계획이다.
문제를 풀고나면 뿌듯하고, 다음 문제를 빨리 풀고 싶은 생각이 든다.