메모
/*
조규현의 좌표 (x1, y1)
백승환의 좌표 (x2, y2)
조규현이 계산한 류재명과의 거리 r1
백승환이 계산한 류재명과의 거리 r2
류재명이 있을 수 있는 좌표의 수?
*/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int T = in.nextInt();
while (T-- > 0) {
int x1 = in.nextInt();
int y1 = in.nextInt();
int r1 = in.nextInt();
int x2 = in.nextInt();
int y2 = in.nextInt();
int r2 = in.nextInt();
System.out.println(tangent_point(x1, y1, r1, x2, y2, r2));
}
}
// 접점 개수 구하는 함수
public static int tangent_point(int x1, int y1, int r1, int x2, int y2, int r2) {
int distance_pow = (int)(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); // 좌표에서 두 점 사이의 거리 공식
if (x1 == x2 && y1 == y2 && r1 == r2) { // 1. 접점 무한 : 중점(좌표) 동일, 반지름 동일
return -1;
} else if (distance_pow > Math.pow(r1 + r2, 2)) { // 2-1. 접점 X : 두 점 사이 거리 > r1 + r2
return 0;
} else if (distance_pow < Math.pow(r1 - r2, 2)) { // 2-2. 접점 X : 두 점 사이 거리 < r1 - r2
return 0;
} else if (distance_pow == Math.pow(r1 + r2, 2)) { // 3-1. 접점 1개 : 두 점 사이 거리 = r1 + r2
return 1;
} else if (distance_pow == Math.pow(r1 - r2, 2)) { // 3-1. 접점 1개 : 두 점 사이 거리 = r1 - r2
return 1;
} else { // 4. 접점 2개 : 두 원이 교차할 경우
return 2;
}
}
}
참고: [백준] 1002번 : 터렛 - JAVA [자바]