Notice
Recent Posts
Recent Comments
Link
«   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
Tags
more
Archives
Today
Total
관리 메뉴

main

[백준-1002번/Java] 터렛 본문

Algorithm

[백준-1002번/Java] 터렛

1984 2022. 11. 22. 22:05

https://www.acmicpc.net/problem/1002

 

1002번: 터렛

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

www.acmicpc.net

 

* 두 원의 접점의 갯수를 구하는 문제이다.

* 외부 / 내부의 경우를 고려해야 한다.

원의 접점
두 점에서 만남
한 점에서 만남
만나지 않는 경우
무수히 많음
외접
내접
외부에서
내부에서
두 중점 거리
< 반지름의 합
두 중점 거리
= 반지름의 합
두 중점의 거리
= 반지름의 차이
두 중점의 거리
> 반지름의 합
두 중점의 거리
< 반지름의 차이
두 중점의 거리= 0
&& 두 반지름이 같은 경우
d < r1 + r2
d = r1 + r2
d = |r1 - r2|
d > r1 + r2
d < |r1 - r2|
d = 0 && r1 = r2
import java.io.*;
import java.util.*;

public class Main {

	public static void main(String[] args) throws IOException {
		Scanner in = new Scanner(System.in);
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		int T = Integer.parseInt(br.readLine());

		for (int i = 0; i < T; i++) {
			StringTokenizer stk = new StringTokenizer(br.readLine(), " ");

			int x1 = Integer.parseInt(stk.nextToken());
			int y1 = Integer.parseInt(stk.nextToken());
			int r1 = Integer.parseInt(stk.nextToken());
			int x2 = Integer.parseInt(stk.nextToken());
			int y2 = Integer.parseInt(stk.nextToken());
			int r2 = Integer.parseInt(stk.nextToken());

			double d = Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));

			if (d == 0 && r1 == r2) {
				// 같은 원인 경우 (무수히 많은 점에서 만난다.)
				System.out.println(-1);
			} else if (d < Math.abs(r1 - r2)) {
				// 원의 내부에 있으면서 안 만나는 경우
				System.out.println(0);
			} else if (d > r1 + r2) {
				// 원의 외부에 있으면서 안 만나는 경우
				System.out.println(0);
			} else if (d == Math.abs(r1 - r2)) {
				// 원의 내부에 있으면서 한 점에서 만나는 경우
				System.out.println(1);
			} else if (d == r1 + r2) {
				// 원의 외부에 있으면서 한 점에서 만나는 경우
				System.out.println(1);
			} else {
				System.out.println(2);
			}
		}
	}

}

[참고자료]

https://tgio.tistory.com/25

728x90
Comments