본문으로 바로가기

[백준] 1002번 [기본수학2] 터렛

category 알고리즘/백준 2021. 12. 8. 01:24

📌 [백준 1002번 터렛]

이 문제는 (x1, y1), (x2, y2)가 주어졌을 때 첫 번째 점에서의 거리 r1과 두 번째 점에서의 거리 r2가 주어졌을 때, 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성해야 합니다.

 

import math

n = int(input())
for i in range(n):
    x1,y1,r1,x2,y2,r2 = map(int,input().split(" "))
    # (x1,y1)과 (x2,y2) 사이의 거리
    r = math.sqrt((x1-x2)**2+(y1-y2)**2) 
    # 두 원이 만나지 않는 경우
    if (0 <= r < abs(r1-r2) and r1!=r2) or r > r1+r2:
        print(0)
    # 두 원이 한 점에서 만나는 경우(외접,내접)
    elif (r == abs(r1-r2) and r!=0) or r == r1+r2:
        print(1)
    # 두 원이 두 점에서 만나는 경우 => 2개 
    elif abs(r1-r2) < r < r1+r2:
        print(2)
    # 두 원이 일치하는 경우 => 무한개
    elif r1==r2 and r==0:
        print(-1)

 

반응형