티스토리 뷰

프로그래밍/BOJ

백준 #1002: 터렛

열무룩 2020. 1. 30. 13:01

 

접근법


문제가 너무 신박해서 재밌게 풀었다. 복잡해 보이는 문제지만 자세히 살펴보면,

 

우선 두 개의 좌표가 주어진다. 이 좌표로 부터 특정 점 (마린 a.k.a 류재명) 까지의 거리를 계산했을 때,

 

마린이 있을 수 있는 좌표를 찾으라고 되어있다. 따라서 하나의 터렛으로 부터 측정한 거리는 원으로 나타낼 수 있고,

 

마찬가지로 또 다른 터렛에서 측정한 거리를 원으로 나타낼 수 있다. 

 

그랬을 때, 마린이 위치할 수 있는 경우의 수는 두 원의 접점의 수를 계산하면 되는 것이다. 

 

두 원 사이의 관계는 아래의 그림을 통해 확인하자.

 

찌그러져 있지만 누가봐도 원이다.

 

 

 

풀이


import math
case = int(input())

for i in range(case):
    x1,y1,r1,x2,y2,r2 = map(int,input().split(' '))
    
    D = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
    R = r1 + r2 
    r = -(r2-r1) if r2 - r1 < 0 else r2 - r1
    
    if D == 0:
        if r1 == r2 :
            print(-1)
        else :
            print(0)
    
    else :
        if D < R and D > r:
            print(2)
        elif (D == R) or (D == r):
            print(1)
        else :
            print(0)

 

 

@ 문제 출처: 백준

'프로그래밍 > BOJ' 카테고리의 다른 글

백준 #10870: 피보나치 수 5  (0) 2020.02.02
백준 #10872: 팩토리얼  (0) 2020.02.02
백준 #3053: 택시 기하학  (0) 2020.01.30
백준 #4153: 직각삼각형  (0) 2020.01.27
백준 #3009: 네 번째 점  (0) 2020.01.27
댓글
링크
최근에 올라온 글
Total
Today
Yesterday