Home 터렛 - baekjoon 1002번
Post
Cancel

터렛 - baekjoon 1002번

터렛

두 사람이 현재 위치하고 있는 좌표 p1(x1, y1), p2(x2, y2)를 받아, p1과 p2가 p3까지의 거리가 각각 r1, r2일 때, p3이 존재할 수 있는 수를 출력하는 문제이다.

접근 방법

image

  • 두 원의 중심과 반지름을 입력하여, 두 원사이의 접점의 개수를 구하는 문제이다.
  • 두 원이 완전히 일치할 때
  • 두 원의 접점이 없을 때
  • 두 원의 접점이 한개일 때
  • 두 원의 접점이 두개일 때를 구하면 된다.

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import sys
import math
input = sys.stdin.readline

T = int(input())
for _ in range(T):
	x1, y1, r1, x2, y2, r2 = map(int, input().split())
	distance = math.sqrt((x1-x2)**2 + (y1-y2)**2) # 두 원의 거리
	
	if distance == 0 and r1 == r2: # 동심원 및 반지름 같음 (위치 무한개)
		print(-1)
	elif abs(r1-r2) == distance or r1 + r2 == distance: # 내접, 외접
		print(1)
	elif abs(r1-r2) < distance < (r1+r2): # 두 원이 두점에서 교차
		print(2)
	else:  # 만나지 않음
		print(0)