https://www.acmicpc.net/problem/1002
말은 번지르르하지만 결국 두 원의 위치관계를 묻는 문제.
다만 두 원의 위치관계인 만큼 외접할 때만 따지는 것이 아니라 내접할 때도 따져야 한다.
내접을 까먹었다가 꽤 고생했다.
두 원의 위치관계는 구글에게 물어보자.
#include <stdio.h>
int powi (int a, int exp) {
int result = 1;
for (int i = 0; i < exp; i++) {
result *= a;
}
return result;
}
int main () {
int T;
int x1, y1, r1, x2, y2, r2;
int distance;
scanf("%d", &T);
while (T--) {
scanf("%d %d %d %d %d %d", &x1, &y1, &r1, &x2, &y2, &r2);
if (x1 == x2 && y1 == y2) { // 동심원
printf(r1 == r2 ? "-1\n" : "0\n"); // 반지름이 같으면 교점은 무한개, 다르면 0;
} else {
distance = powi(x2 - x1, 2) + powi(y2 - y1, 2); // 중심간 거리의 제곱값을 잰다.
if (powi(r1 - r2, 2) < distance && distance < powi(r1 + r2, 2)) { // 두 점에서 만나는 경우
printf("2\n");
} else if (distance == powi(r1 + r2, 2) || distance == powi(r1 - r2, 2)) { // 한 점에서 접하는 경우
printf("1\n");
} else { // 만나지 않는 경우, 교점은 없다.
printf("0\n");
}
}
}
return 0;
}
'coding_test > BAEKJOON' 카테고리의 다른 글
백준 11653번 C언어 풀이 (0) | 2021.09.14 |
---|---|
백준 15829번 C언어 / C++ 풀이 (4) | 2021.09.13 |
백준 3053번 C언어 풀이 (0) | 2021.09.10 |
백준 2581번 C언어 풀이 (0) | 2021.09.10 |
백준 10757번 Python 풀이 (0) | 2021.09.10 |