[백준] 1002 터렛 (파이썬)

Jewon Joel Park·2022년 5월 30일
0

문제 링크


문제 설명

두 원의 좌표와 반지름이 주어질 때, 교점의 갯수(2, 1, 0, 무한할 경우 -1)를 출력하는 코드 작성


풀이 코드

n = int(input())

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

    if d == 0 and r1 == r2:
        print(-1)
    elif abs(r1 - r2) == d or r1+r2 == d:
        print(1)
    elif abs(r1 - r2) < d < (r1 + r2):
        print(2)
    else:
        print(0)

코드 설명

  1. 두 좌표 간의 거리를 계산 (d)
  2. 거리 d가 0이고 두 원의 반지름이 같을 경우 교점은 무한히 존재
  3. 거리 d와 두 원의 반지름의 차가 같을 경우 두 원은 내접하며, 거리 d가 두 원지름의 합과 같을 경우 두 원은 외접하므로 교점은 1개
  4. 두 원의 반지름의 합이 d 보다 크고, 반지름의 차가 d보다 작을 경우 교점은 2개
  5. 이외의 경우(반지름의 합보다 d가 클 경우)는 교점이 존재하지 않음
profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글