728x90
반응형
터렛에서는 ** 0.5를 해서 제곱근을 구했었는데, 보기 좋게 math 라이브러리를 사용하기로 했다.
행성계와 시작, 행성계와 끝의 거리를 구하고 행성계의 반지름과 비교하면 된다.
행성계와 시작 사이의 거리를 d1, 행성계와 끝 사이의 거리를 d2, 행성계의 반지름을 r이라 하자.
d1, d2 둘 다 r 보다 작으면 행성계는 시작과 끝 둘 다 포함하지 못해서 경로에 포함되지 않고
반대로 d1, d2 둘 다 r 보다 크면 행성계가 시작과 끝 둘 다 포함하기 때문에 경로에 포함되지 않는다.
결국 행성계 안에 시작과 끝 지점 둘 중 하나만 속해 있다면 경로에 포함된다는 것이다.
# ^는 xor 비트 연산자이다.
from math import sqrt
for _ in range(int(input())):
x1, y1, x2, y2 = map(int, input().split())
s, e = [x1, y1], [x2, y2]
ans = 0
for i in range(int(input())):
x, y, r = map(int, input().split())
d1 = sqrt((x-x1)**2 + (y-y1)**2)
d2 = sqrt((x-x2)**2 + (y-y2)**2)
if (d1 < r) ^ (d2 < r):
ans += 1
print(ans)
728x90
반응형
'Agorithm > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 1009번 분산처리(python) (0) | 2020.01.23 |
---|---|
백준 알고리즘 1008번 A/B(python) (0) | 2020.01.23 |
백준 알고리즘 1003번 피보나치 함수(python) (0) | 2020.01.23 |
백준 알고리즘 1002번 터렛(python) (0) | 2020.01.23 |
백준 알고리즘 1001번 A-B(python) (0) | 2020.01.23 |