본문 바로가기
백준

[python] 1002. 터렛

by DylanMsK 2019. 6. 26.

문제 출처

1002. 터렛

 

 

풀이

  • d(distance): 터렛1과 터렛2의 거리
  • r1, r2: 터렛1과 터렛2 부터 마린까지의 거리
  • ip(intersection point): 마린이 존재할 수 있는 경우의 수

 

풀이에 사용하는 용어는 위와같이 정의하고, 두 터렛의 좌표와 마린과의 거리가 주어졌을때 마린이 존재할 수 있는 위치의 경우는 다음과 같다.

  • d가  (r1+r2) 보다 클때
    • 두 터렛간의 교점이 없음
  • d가 (r1+r2)와 같을때
    • 두 터렛간의 교점이 하나 존재
  • d가 (r1+r2) 보다 작을때
    • 두 터렛의 좌표가 같고 마린까지의 거리도 같을 때
    • 한 터렛의 좌표가 다른 터렛의 반경 내부에 있으며 교점이 두 개 존재
    • 한 터렛의 좌표가 다른 터렛의 반경 내부에 있으며 교점이 두 개 존재
    • 한 터렛의 좌표가 다른 터렛의 반경 내부에 있으며 교점이 없음

 

위 조건을 모두 고려하면 아래와 같다.

 


N = int(input())
for _ in range(N):
    x1, y1, r1, x2, y2, r2 = map(int, input().split())

    distance = ((x1-x2)**2 + (y1-y2)**2)**0.5

    if distance > r1 + r2:
        ip = 0
    elif distance == r1 + r2:
        ip = 1
    else:
        if distance == 0 and r1 == r2:
            ip = -1
        else:
            if distance + min(r1, r2) > max(r1, r2):
                ip = 2
            elif distance + min(r1, r2) == max(r1, r2):
                ip = 1
            else:
                ip = 0
    print(ip)
    

'백준' 카테고리의 다른 글

[python] 16236. 아기 상어  (0) 2019.06.29
[python] 10825. 국영수  (0) 2019.06.29
[python] 1015. 수열정렬  (0) 2019.06.26
[python] 1010. 다리놓기  (0) 2019.06.26
[python] 1004. 어린 왕자  (0) 2019.06.25