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

Jungyu Jin·2022년 1월 10일
0

BackJoon

목록 보기
8/16

문제 설명

풀이 전략

문제를 분석해보면 두 원이 주어지고, 그 두 원이 겹치는 점의 개수를 출력하는 문제이다. 출력은 0,1,2 의 경우가 있을 수 있다.

  1. 두 원이 멀어서 겹치지 않거나, 한 원의 중심이 다른 원의 내부에 있고, 반지름이 작아서 겹치지 않는 경우 = 0
  2. 두 원이 안에서 접하거나 밖에서 접하는 경우 = 1
  3. 두 원이 두 점에서 만나는 경우 = 2

이 조건들을 수학적 식으로 해석하여 조건을 작성하면 해결할 수 있다.

코드

for _ in range(int(input())):
    x1,y1,r1,x2,y2,r2=map(int,input().split())
    d = ((x2-x1)**2 + (y2-y1)**2)**0.5
    sum_r = abs(r1+r2)
    dif_r = abs(r1-r2)
    if d == 0 and dif_r == 0: # 두 원이 동심원이고 반지름 같을 때
        print(-1)
    elif d == sum_r or d == dif_r: # 두 원이 접할 때 (안,밖)
        print(1)
    elif dif_r < d < sum_r:
        print(2)
    else:
        print(0)

0개의 댓글