STUDY_SEONMIN
1002. 터렛 본문
조규현의 좌표 (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 |