[백준/Python]1004_어린 왕자
2021. 6. 5. 16:53ㆍ백준 알고리즘
문제
https://www.acmicpc.net/problem/1004
풀이
(x, y)와 (a, b)의 두 점 거리 = ((x - a) ** 2 + (y - b) ** 2)) ** 0.5
아래의 경우에만 진입/이탈 횟수를 1 증가시킵니다.
1. 행성계 안에 출발 지점이 있고 행성계 밖에 도착 지점이 있을 때
2. 행성계 안에 도착 지점이 있고 행성계 밖에 출발 지점이 있을 때
코드
import sys
t = int(sys.stdin.readline().rstrip())
for _ in range(t):
start_x, start_y, end_x, end_y = map(int, sys.stdin.readline().rstrip().split())
n = int(sys.stdin.readline().rstrip())
cnt = 0
for _ in range(n):
p_x, p_y, radius = map(int, sys.stdin.readline().rstrip().split())
start_to_center = (start_x - p_x) ** 2 + (start_y - p_y) ** 2 # 시작점부터 행성계 중심까지 거리(편의상 루트는 생략)
end_to_center = (end_x - p_x) ** 2 + (end_y - p_y) ** 2 # 도착점부터 행성계 중심까지 거리
# 행성계안에 시작점이나 도착점이 하나만 존재하면 카운트함
if start_to_center < (radius ** 2) < end_to_center:
cnt += 1
continue
if end_to_center < (radius ** 2) < start_to_center:
cnt += 1
continue
print(cnt)
'백준 알고리즘' 카테고리의 다른 글
[백준/Python]1890_점프 (0) | 2021.06.07 |
---|---|
[백준/Python]2630_색종이 만들기 (0) | 2021.06.07 |
[백준/Python]2293_동전 1 (0) | 2021.06.05 |
[백준/Python]11659_구간 합 구하기 4 (0) | 2021.06.04 |
[백준/Python]11057_오르막 수 (0) | 2021.06.04 |