개발 창고/Algorithm
[백준] 1002번 터렛 - JAVA
로이제로
2024. 3. 18. 12:59
반응형
- 문제
- 풀이
문제
https://www.acmicpc.net/problem/1002
문제 내용은 지적 재산 보호 차원에서 가져오지 않고 풀이만 공유드리도록 하겠습니다.
풀이
제 풀이가 무조건적으로 맞는 것도 최적의 답변도 아니지만, 이런 풀이도 있다는 차원에서 작성해 보며, 좀 더 나은 방법이 있다면 이야기해 주셔도 도움 될 것 같습니다.
풀이에 도움이 될 만한 내접과 외접에 대한 이론을 보시고 오시면 좀 더 도움 될 것 같습니다.
https://mathbang.net/101#gsc.tab=0
import java.util.Scanner;
/**
* 백준 문제 1002
* @author royzero
*
*/
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
// Step. 반복 횟 수 입력
int count = in.nextInt();
// Step. 반복 횟 수 만큼 처리
for(int i = 0; i < count; i++){
// Step. 입력 값 분할
int x1 = in.nextInt();
int y1 = in.nextInt();
int r1 = in.nextInt();
int x2 = in.nextInt();
int y2 = in.nextInt();
int r2 = in.nextInt();
// Step. 거리 계산
// dist = sqrt((x2 - x1)^2 + (y2 - y1)^2)
double distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
int sum = r1 + r2;
int sub = Math.abs(r1 - r2);
// case 1 - 두 원이 정확히 겹칠 경우
if (distance == 0 && r1 == r2) {
System.out.println(-1);
// case 2 - 두 원이 서로 겹치면서 인접하지 않는 경우
} else if (distance < sub) {
System.out.println(0);
// case 3 - 두 원이 서로 겹치지 않으면서 인접하지 않는 경우
} else if (distance > sum) {
System.out.println(0);
// case 4 - 두 원이 서로 겹치면서 인접하는 경우
} else if (distance == sub) {
System.out.println(1);
// case 5 - 두 원이 서로 겹치지 않으면서 인접하는 경우
} else if (distance == sum) {
System.out.println(1);
// case 6 - 두 원이 서로 겹치면서 인접하지 않는 경우
} else {
System.out.println(2);
}
}
in.close();
}
}
반응형