STUDY_SEONMIN

1002. 터렛 본문

STUDY/Baekjoon Algorithm

1002. 터렛

Kululu_ 2021. 7. 18. 14:14

조규현의 좌표 (x1, y1)와 백승환의 좌표 (x2, y2)가 주어지고, 조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오.

 

만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

T = int(input())

for _ in range(T):
    x1, y1, r1, x2, y2, r2 = map(int,input().split())
    d = ((x2-x1)**2 + (y2-y1)**2)**0.5
    
    if d == 0 and r1 == r2:
        print(-1)
    else:
        if d > r1+r2 or d < abs(r2-r1):
            print(0)
        elif d == r1+r2 or d == abs(r2-r1):
            print(1)
        else:
            print(2)

 

 

  • 두 원의 중심사이의 거리와 반지름의 길이를 이용해 해결하는 문제입니다.

  • 무한대를 제외하고는 두 원이 접하거나(좌표1개), 두 원이 두 점에서 만나거나(좌표2개), 두 원이 만나지 않거나 (좌표0개) 중 하나의 정답을 가지게 됩니다.
    이 때 각각의 케이스에 대해서 원이 서로 바깥에 위치하는 경우, 작은 원이 큰 원 내부에 위치하는 경우 두 가지가 존재할 수 있으므로 or를 이용해 해당 조건들을 표시해주었습니다.

'STUDY > Baekjoon Algorithm' 카테고리의 다른 글

10870. 피보나치 수 5  (0) 2021.07.18
10872. 팩토리얼  (0) 2021.07.18
3053. 택시 기하학  (0) 2021.07.16
4153. 직각삼각형  (0) 2021.07.16
3009. 네 번째 점  (0) 2021.07.16
Comments