본문 바로가기

Programming [Python]/백준 알고리즘 솔루션

#133 백준 파이썬 [1002] 터렛

https://www.acmicpc.net/problem/1002

 

#Solution

단순 수학 문제이다. 예외를 걸러주는 것이 중요하다.

 

0) 같은 점일때: -1 혹은 0

 

1) distance(점 사이의 거리) 가 반지름 더한 값 보다 작을 때: 0

2) 한 원이 다른 원을 포함하도록 클 때: 0

3) 외접하거나 내접할 때: 1

4) 그 외: 2

test = int(input())

for _ in range(test):
    x1, y1, r1, x2, y2, r2 = map(int, input().split())
    distance = (((x1 - x2) ** 2) + ((y1 - y2) ** 2)) ** 0.5
    
    if x1 == x2 and y1 == y2:
        if r1 == r2:
            print(-1)
        else:
            print(0)
        continue
    
    if r1 > distance + r2 or r2 > distance + r1 or distance > r1 + r2:
        print(0)
    elif r1 == distance + r2 or r2 == distance + r1 or r1 + r2 == distance:
        print(1)
    else:
        print(2)