반응형
x1, y1 좌표를 입력하고 류재명과의 거리 r1 마찬가지로 x2, y2, r2를 입력한다.
류재명이 있을 수 있는 위치의 개수를 출력하는 프로그램이다.
x1, y1 좌표에서 r1을 반지름으로 원을 그리고 x2, y2에서 r2로 원을 그리고 두 원이 만나는 점이 류재명이 있을 수 있는 위치이다.
경우의 수를 살펴보면 네 가지가 있다.
두 원이 아예 만나지 않는 경우 (두 점 사이의 거리보다 r1+r2값이 작은경우, r1, r2의 차이가 거리보다 큰 경우)
한 점이 만나는 경우 (r1+r2가 거리랑 일치하는 경우, r1, r2의 차이가 거리랑 같은 경우)
무한대인 경우 (다 같은 값인 경우)
두 점이 만나는 경우 (앞에 조건을 다 넣고 이거는 else로 편하게 ㅎ)
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
31
32
33
34
35
36
37
38
39
40
41
|
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int x1, y1, r1, x2, y2, r2;
int testcase;
double d;
testcase = sc.nextInt();
for(int i=0; i<testcase; i++) {
int result;
x1 = sc.nextInt();
y1 = sc.nextInt();
r1 = sc.nextInt();
x2 = sc.nextInt();
y2 = sc.nextInt();
r2 = sc.nextInt();
//두 점의 길이
d = Math.sqrt(Math.pow((x1-x2), 2) + Math.pow((y1-y2), 2));
//원이 겹쳐서 무한인 경우 Math.abs()절대값 함수
if(x1 ==x2 && y1 == y2 && r1 == r2) {
result = -1;
}
else if(d == r1+r2 || Math.abs(r1-r2) == d ) { //Math.abs(r1-r2) == d
result = 1;
}
else if(Math.abs(r1-r2) > d || x1 ==x2 && y1 == y2 && r1 != r2 || d > r1+r2 ) {
result = 0;
}
else {
result = 2;
}
System.out.println(result);
}
}
}
|
cs |
반응형
'프로그래밍 > 백준 알고리즘 코드' 카테고리의 다른 글
백준 10870번 자바 피보나치 수 5 [재귀] (0) | 2021.06.06 |
---|---|
백준 10872번 자바 팩토리얼 [재귀] (0) | 2021.06.03 |
백준 3053번 자바 택시 기하학 [기본수학2] (0) | 2021.05.12 |
백준 4153번 자바 직각삼각형 [기본수학2] (0) | 2021.05.11 |
백준 3009번 JAVA 네 번째 점 [기본 수학2] (0) | 2021.05.11 |
댓글