Computer Language/Algorism
[백준 알고리즘] 1002번 터렛
국산곰탱이
2019. 4. 30. 12:03
반응형
문제 출처
https://www.acmicpc.net/problem/1002
1002번: 터렛
각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.
www.acmicpc.net
문제 이해하기
두 좌표 (x1,y1) 지점에 반지름 r1인 원 하나와 (x2,y2) 지점에 반지름 r2인 원 하나가 교차하는 개수를 찾는 것이 핵심이다.
문제 조건
1. 조건 (x1,y1)와 (x2,y2)가 같다
1-1 r1,r2가 같으면 (-1) 출력
1-2 r1,r2가 다르면 (0) 출력
2. 1의 조건이 틀릴때
2-1 (r1+r2) > i > |(r1-r2)| 교차점이 2개
2-2 (r1+r2) == i 교차점이 1개
2-3 (r1+r2) < i 교차점이 0개
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
|
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[]) {
int x1,x2,y1,y2,r1,r2,cnt,loop;
scanf("%d",&cnt);
for(loop=0;loop<cnt;loop++){
scanf("%d %d %d %d %d %d",&x1,&y1,&r1,&x2,&y2,&r2);
double i = sqrt(pow(x1-x2,2)+pow(y1-y2,2));
if(x1==x2&&y1==y2){
if(r1 == r2)
printf("-1\n");
else
printf("0\n");
}else if(abs(r1-r2)<i && i<(r2+r1))
printf("2\n");
else if(abs(r1-r2)==i || i==(r2+r1))
printf("1\n");
else
printf("0\n");
}
return 0;
}
|
반응형