티스토리 뷰

원의 방정식 에서 어떤 점을 넣었을 때 반지름^2 보다 작으면 원안에 존재 한다는 점을 이용했다.

시작점 또는 끝점이 원 안에 존재 한다면 cnt += 1을 해준다.  동시에 temp도 += 1 한다.

만약 시작점과 끝점이 같은 원 안에 존재한다면 temp가 2일 것 이므로 cnt -= 2를 해주었다. 


 

import sys
input = sys.stdin.readline

T = int(input()) # 테케
# 행성계 진입/이탈 횟수를 최소화
for tc in range(T):
    x1, y1, x2, y2 = map(int, input().split())
    n = int(input()) # 행성계의 개수
    cnt = 0
    for i in range(n):
        temp = 0
        cx, cy, r = map(int, input().split()) # 행성계의 중점과 반지름
        # 행성 원 안에 시작점 or 도착점이 존재한다면 cnt += 1
        if (x1-cx)**2 + (y1-cy)**2 < r**2: # 시작점이 원안에 존재
            cnt += 1
            temp += 1
        if (x2-cx)**2+ (y2-cy)**2 < r**2: # 끝점이 원안에 존재
            cnt += 1
            temp += 1
        if temp == 2: # 시작점과 끝점이 같은 원 안에 있을 때는 temp == 2
            cnt -= 2

    print(cnt)

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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 27 28 29 30
글 보관함