본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 1002번 터렛

by 현장 2021. 12. 13.

-코드

from math import sqrt
for _ in range(int(input())):
    x1, y1, r1, x2, y2, r2 = map(int, input().split())
    d = sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2)
    if d == 0 and r1 == r2:
        print(-1)
    elif r1 + r2 < d or max(r1, r2) > d + min(r1, r2):
        print(0)
    elif d == r1 + r2 or max(r1, r2) == min(r1, r2) + d:
        print(1)
    else:
        print(2)

처음에 2 1 0 출력이 어떻게 나오는지 몰라서 찾아보니 원의 내접과 외접 등에 따라서 나오는 것이었습니다. 그래서 수식을 참고하여 만들었습니다.

 

참고: https://leedakyeong.tistory.com/entry/%EB%B0%B1%EC%A4%80-1002%EB%B2%88-%ED%84%B0%EB%A0%9B-in-python-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%BD%94%EB%93%9C-%EB%B0%8F-%EC%84%A4%EB%AA%85