728x90
반응형
- 문제
- 올바른 풀이
T = int(input())
for i in range(T):
cnt = 0
x1, y1, x2, y2 = map(int, input().split()) # 출발점과 도착점
n = int(input())
for i in range(n):
c1, c2, r = map(int, input().split()) # 행성계 중점과 반지름
d1 = (((x1 - c1) ** 2) + ((y1 - c2) ** 2)) ** 0.5
d2 = (((x2 - c1) ** 2) + ((y2 - c2) ** 2)) ** 0.5
# 둘 다 속하거나 둘 다 속하지 않으면 진입이나 이탈할 필요 없음
if (d1 < r and d2 > r) or (d1 > r and d2 < r):
cnt += 1 # 하나는 속하고 하나는 속하지 않을 때 체크
print(cnt)
다음 그림과 같이, 출발점에서 도착점까지의 진입/이탈 횟수를 구하는 문제이다.
출발점과 도착점 사이에 각 행성계의 반지름을 통해 진입/이탈 횟수를 구한다.
출발점/도착점과 행성의 반지름 사이의 거리를 통해 반지름보다 크거나 작으면 카운트하는 방법으로 문제를 해결한다.
728x90
'자료구조 및 알고리즘 > 백준' 카테고리의 다른 글
[python] 1904. 01타일 (0) | 2023.02.20 |
---|---|
[python] 9184. 신나는 함수 실행 (0) | 2023.02.17 |
[python] 1966. 프린터 큐 (0) | 2023.02.02 |
[python] 4949. 균형잡힌 세상 (0) | 2023.01.30 |
[python] 2164. 카드2 (0) | 2023.01.28 |