Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

행복한 개구리

백준 21.12.11. 1002번 - 터렛 본문

Algorithm/BaekJoon

백준 21.12.11. 1002번 - 터렛

HappyFrog 2021. 12. 11. 17:06

import math

T = int(input())

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

    if dis == 0 and r1 == r2:
        print(-1)
    elif abs(r1 - r2) == dis or r1 + r2 == dis:
        print(1)
    elif abs(r1 - r2) < dis < abs(r1 + r2):
        print(2)
    else:
        print(0)
  • 조규현(R1)과 백승환(R2)에서 계산한 위치의 접점을 구하면 됩니다.
  • 한 점에서 일정한 거리에 위치한 점들의 집합은 원이므로 조규현과 백승환의 계산한 거리는 원의 형태를 띕니다.
  • 두 원의 접점이 류재명이 있을 수 있는 좌표입니다.

 

  • 조건문 분기만 나눠주면 됩니다.
  • dis는 두 원 사이의 거리(중심부터 중심까지의 거리)를 나타냅니다.
    1. 중심이 겹치고 반지름도 같다면 완벽히 겹쳤다는 의미이므로 두 점의 접점은 무한대입니다.
    2. 두 원의 반지름의 차이가 거리와 같다면 내접, 두 원의 반지름의 합이 거리와 같다면 외접이므로 접점은 1개입니다.
    3. 두 원의 반지름의 차이보다 크고 합보다 작다면 두 원의 접점은 2개입니다.
    4. 그렇지 않다면 두 점은 완전히 떨어져 있는 형태로 접점이 없습니다.