문제 : https://www.acmicpc.net/problem/1002
1002번: 터렛
각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.
www.acmicpc.net
평면에서 두 원의 중심거리 공식을 사용하면 간단하게 구할 수 있음.
원이 두 점에서 만나는 경우에는 2, 외접or내접 하는 경우에는 1 두 원이 같을 때는 -1 나머지 경우는 0으로 출력
https://terms.naver.com/entry.naver?docId=3405330&cid=47324&categoryId=47324
중심거리
평면에서 두 원의 중심 사이의 거리를 중심거리라고 한다. 다음 그림에서 중심이 각각 \rm O_1과 \rm O_2인 두 원의 중심거리는 선분 \rm O_1O_2의 길이인 d이다. 두 원의 반지름의 길이와 중심거리를
terms.naver.com
C언어 소스코드
#include <stdio.h>
#include <math.h>
int main() {
int N, i;
int x1, y1, r1, x2, y2, r2;
double distance;
int sub;
scanf("%d", &N);
for(i = 0; i < N; i++) {
scanf("%d %d %d %d %d %d", &x1, &y1, &r1, &x2, &y2, &r2);
distance = sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));
if(r1 > r2)
sub = r1 - r2;
else
sub = r2 - r1;
if(distance == 0 && r1 == r2) //두 원이 같을 경우
printf("-1 \n");
else if(distance == r1+r2 || sub == distance) //두 원이 내접 or 외접
printf("1 \n");
else if(distance > sub && distance < r1 + r2) //두 원이 두점에서 만남
printf("2 \n");
else //나머지
printf("0 \n");
}
}
'ETC. > Algorithm' 카테고리의 다른 글
[백준] - 2981번: 검문 (C++) (0) | 2023.02.06 |
---|---|
[백준] - 2477번: 참외밭 (C언어) (0) | 2023.01.16 |