카테고리 없음

1004 - 어린 왕자

동바리 2023. 5. 21. 16:51

 

import sys

MAX = 1000
def main():
    T = int(input())
    while (T > 0) :
        T = T - 1
        start_x, start_y, end_x, end_y = map(int, input().split())
        in_out_cnt = 0
        planet_cnt = int(input())
        for i in range(0, planet_cnt) :
            planet_x, planet_y, radius = map(int, input().split())
            if ((start_x - planet_x) * (start_x - planet_x) + (start_y - planet_y) * (start_y - planet_y) < radius * radius):
                if ((end_x - planet_x) * (end_x - planet_x) + (end_y - planet_y) * (end_y - planet_y) > radius * radius):
                    in_out_cnt = in_out_cnt + 1
                    continue

            if ((end_x - planet_x) * (end_x - planet_x) + (end_y - planet_y) * (end_y - planet_y) < radius * radius):
                if ((start_x - planet_x) * (start_x - planet_x) + (start_y - planet_y) * (start_y - planet_y) > radius * radius):
                    in_out_cnt = in_out_cnt + 1
                    continue

        print(in_out_cnt)

main()

1004번: 어린 왕자 (acmicpc.net)

 

1004번: 어린 왕자

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주

www.acmicpc.net

  1. 문제의 설명은 장황했지만, 결국 시작지점과 종료지점이 각각 몇개의 원 안에 있는지 물어보는 문제였습니다.
  2. 각각 몇개의 원안에 있는지 수학 공식을 이용해서 풀 수 있었습니다.
  3. 다만, 시작지점과 종료지점이 같은 원 안에 있음을 주의해서 풀이해야 합니다.