카테고리 없음
[PYTHON/파이썬] 백준 BAEKJOON 1004번 어린왕자
remazitensi
2024. 8. 23. 00:31
문제링크
https://www.acmicpc.net/problem/1004
문제 풀이
- 입력 받기: 테스트 케이스 개수와 각 테스트 케이스에 대해 출발점, 도착점, 행성계의 개수와 각 행성계의 정보(중심 좌표와 반지름)를 입력받습니다.
- 거리 계산: 출발점과 도착점 각각에 대해 각 행성계의 중심과의 거리를 제곱하여 계산합니다.
- 행성계와의 관계 확인: 각 행성계의 반지름 제곱과 비교하여 출발점과 도착점 중 적어도 하나가 행성계의 내부에 있는지 확인합니다.
- 카운트 증가: 출발점 또는 도착점 중 하나라도 행성계의 내부에 있는 경우 카운트를 증가시킵니다.
- 결과 출력: 모든 행성계를 처리한 후, 각 테스트 케이스에 대해 카운트를 출력합니다.
코드
# 테스트 케이스 개수 입력
T = int(input())
# 각 테스트 케이스를 처리
for _ in range(T):
# 출발점 (x1, y1)과 도착점 (x2, y2) 좌표 입력
x1, y1, x2, y2 = list(map(int, input().split()))
# 행성계(원)의 개수 입력
n = int(input())
count = 0 # 출발점 또는 도착점이 행성계 내부에 있는 경우의 수를 카운트
for _ in range(n):
# 행성계의 중심 (cx, cy)과 반지름 (cr) 입력
cx, cy, cr = map(int, input().split())
# 출발점과 행성계 중심 간의 거리 제곱
dis1 = (x1 - cx)**2 + (y1 - cy)**2
# 도착점과 행성계 중심 간의 거리 제곱
dis2 = (x2 - cx)**2 + (y2 - cy)**2
# 행성계의 반지름 제곱
pow_cr = cr**2
# 출발점과 도착점 중 하나라도 행성계 내부에 있는 경우 카운트
if pow_cr > dis1 and pow_cr > dis2:
# 두 점이 모두 행성계 내부에 있는 경우 (카운트하지 않음)
pass
elif pow_cr > dis1:
# 출발점이 행성계 내부에 있지만 도착점은 아닐 때
count += 1
elif pow_cr > dis2:
# 도착점이 행성계 내부에 있지만 출발점은 아닐 때
count += 1
# 결과 출력
print(count)