반응형
이번에는 터렛 문제를 풀어 보겠습니다.
.
.
.
.
.
.
사실 이문제는 처음에 읽었을 때는 이해가 되지 않았지만 한 번 더 읽어보니
평면 위에서 두 점이 원을 그리고 있는 모습을 상상하면서 풀면 되었었다.
풀기 위해서는 우선 원과원 사이의 거리를 구하는 공식을 알아야 한다.
만나는 접접이 두 개일 경우는 원이 내접할 경우와 외접할 경우 이렇게 2가지 가 있습니다.
내접할 경우 -> d = r1 - r2
외접할 경우 -> d = r1 + r2
.
.
.
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
int n, i;
int x1, y1, r1, x2, y2, r2;
int d; // 점과 점사이의 거리
int sum; // r1 + r2 외접할 경우 사용
int min; // r1 - r2 내점할 경우 사용
cin >> n;
for (i = 0; i < n; i++) {
cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
d = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
sum = (r1 + r2)*(r1+r2);
min = (r1 - r2)*(r1-r2);
if (d == 0) {
if (min == 0) printf("-1\n");
else printf("0\n");
}
else if (d == sum || d == min) {
printf("1\n");
}
else if (min < d && d < sum) {
printf("2\n");
}
else {
printf("0\n");
}
}
return 0;
}
.
.
.
반응형