728x90
https://www.acmicpc.net/problem/1002
터렛이 닿을 수 있는 거리는
중심점을 기준으로 r 만큼의 반지름을 가진 원과 같다.
따라서 두 원이 두 점에서 만날때 / 한점에서 접할떄 / 만나지 않을때를 고려해서
식을 써주면 된다.
접할떄 같은 경우 내접, 외접 두가지 케이스가 있고
만나지 않을때도 서로 의 밖에서 만나지 않는경우
혹은 큰 원 안에 작은 원이 쏙 들어가있어서 만나지 않는 경우가 있다. 잘 고려해야함!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import sys
from math import sqrt
input = sys.stdin.readline
t = int(input())
for _ in range(t):
cnt = 0
x1, y1, r1, x2, y2, r2 = map(int, input().split())
# 두 터렛의 원점 사이의 거리
between_length = sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
# 두 원이 완전 겹칠때
if between_length == 0 and r1 == r2:
print(-1)
# 내접, 외접할떄
elif abs(r2 - r1) == between_length or r2 + r1 == between_length:
print(1)
# 두 점이 서로 안 만날때 내/외
elif abs(r2 - r1) > between_length or r1 + r2 < between_length:
print(0)
else:
print(2)
|
cs |
728x90
'PS > 백준' 카테고리의 다른 글
[백준 9663번] N-Queen (파이썬/python) (0) | 2021.06.15 |
---|---|
[백준 2798번 ] 블랙잭 (파이썬/python) (0) | 2021.06.15 |
[백준 15650번] N과 M (2) (0) | 2021.06.15 |
[백준 2630번] 색종이 만들기 (파이썬/python) (0) | 2021.06.15 |
[백준 2108번] 통계학 (파이썬/python) (0) | 2021.06.15 |