반응형
6개의 경우의 수를 구한다
경우의 수 | 두 점에서 만남 | 한 점에서 만남 | 만나지 않는 경우 | 무수히 많음 | ||
외접 | 내접 | 외부에서 | 내부에서 | |||
두 중점 거리 < 반지름의 합 (d < r1 + r2) |
두 중점 거리 = 반지름의 합 (d = r1 + r2) |
두 중점의 거리= 반지름의 차이 (d = |r1 - r2|) |
두 중점의 거리 > 반지름의 합 (d > r1 + r2) |
두 중점의 거리 < 반지름의 차이 (d < |r1 - r2| |
두 중점의 거리= 0 AND 두 반지름이 같은 경우 (d = 0 AND r1 = r2) |
import java.io.IOException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException{
/* 백준 1002번 */
Scanner scanner = new Scanner(System.in);
int T = scanner.nextInt();
for (int i = 0; i < T; i++) {
int x1 = scanner.nextInt();
int y1 = scanner.nextInt();
int r1 = scanner.nextInt();
int x2 = scanner.nextInt();
int y2 = scanner.nextInt();
int r2 = scanner.nextInt();
double d = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
/*
* 두 중점의 거리가 0이고, 반지름까지 같다
* 같은 원
*/
if (d == 0 && r1 == r2) {
System.out.println(-1);
}
/*
* 두 원이 서로 외접 하거나 내접 하지않은 경우
* 접점이 없음
*/
else if (d > r1 + r2 || d < Math.abs(r1 - r2)) {
System.out.println(0);
}
/*
* 두 원이 외접 하거나 내접하는 경우
* 접점이 하나 일 경우
*/
else if (d == r1 + r2 || d == Math.abs(r1 - r2)) {
System.out.println(1);
}
/* 접점이 두개 일 경우 */
else if (d < r1 + r2) {
System.out.println(2);
}
}
}
}
반응형
'컴퓨터 > 알고리즘' 카테고리의 다른 글
소수 구하기(에라토스테네스의 체) (0) | 2020.07.20 |
---|