[백준] 터렛

Ek·2022년 3월 4일
0

알고리즘

목록 보기
3/3

문제

풀이
1)각 터렛의 좌표와 반지름이 주어지고 이에 대한 원의 접점을 구하라는 뜻이다.
2)두 원의 반지름 r1, r2
두 원의 중심 사이의 거리 d

  • 두 원의 접점이 생길 수 있는 경우의 수는 4개

    1) 두 원의 접점이 무수히 많은 경우
    : 두 원의 크기가 같은 경우 : d=0

    2)두 원의 접점이 0개인 경우
    :동심원인 경우 겹치는 부분이 없다 : d=o
    :r1, r2, d중에서 가장 큰수가 나머지 두 수의 합보다 큰 경우

    3)두 원의 접점이 1개인 경우
    : 외접 r1 + r2 = d
    : 내접 r1 - r2 = d

    4)두 원의 접점이 2개인 경우
    : r1 - r2 <d < r1 + r2

import math

T = int(input())

for _ in range(T):
    x1, y1, r1, x2, y2, r2 = map(int, input().split())
    d = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)

    if x1 == x2 and y1 == y2:     #원의 중심이 같을때
        if r1 == r2:
            print(-1)
        else:
            print(0)
    
    else:                         #원의 중심이 같지 않을때 
        if r1 > d + r2 or r2 > d + r1 or d > r1 + r2:   #r1,r2,d중에서 가장 큰 수가 나머지 두 수의 합보다 큰 경우 
            print(0)
        elif abs(r1 - r2) == d or r1 + r2 == d:     #외접,내접일 경우
            print(1)
        else:										# 그밖의 경우 
            print(2)
profile
hello~

0개의 댓글