-
1002번 터렛 풀이Programming/[BAEKJOON] acmicpc 2017. 12. 30. 18:11
이 문제를 풀기 위해 꼬박 하루가 걸렸네요.
풀이를 한 후 맞으면 성취감이 너무 크네욯ㅎㅎㅎ
문제는 이러합니다.
문제 풀이를 위해 r을 반지름으로 생각하시면 문제에 대한 이해는 가능합니다.
좌표를 그려보고 원의 접점을 확인해보고, 접점이 어떻게해야 나오는지(두 점 사이의 거리와 반지름의 관계)를 파악한다면 코딩은 쉽습니다.
바로 풀이한 소스를 공개합니다.
[답안]
#include <stdio.h>
#include <math.h>
int func(int x1, int y1, int r1, int x2, int y2, int r2);
int main(void)
{
int input;
int i;
int x1,y1,r1,x2,y2,r2;
scanf("%d",&input);
int result[input];
for(i = 0; i < input; i++)
{
scanf("%d %d %d %d %d %d",&x1,&y1,&r1,&x2,&y2,&r2);
result[i] = func(x1,y1,r1,x2,y2,r2);
}
for(i = 0; i < input; i++)
{
printf("%d\n",result[i]);
}
return 0;
}
int func(int x1, int y1, int r1, int x2, int y2, int r2)
{
int result = 0;
double c;
c = sqrt((pow(x1-x2,2.0)) + (pow(y1-y2,2.0)));
if(x1 == x2 && y1 == y2)
{
if(r1 == r2)
result = -1;
else
result = 0;
}
else
{
if((c < (r1+r2)) && c > abs(r1-r2))
result = 2;
else if(c == (r1+r2) || c == abs(r1-r2))
result = 1;
else
result = 0;
}
return result;
}
math.h 라이브러리를 이용하면 더욱 쉽게 풀 수 있습니다.
음.. 생각해보니 함수화는 굳이 안해줘도 될것같네요. ㅎㅎ
몇번을 시도한 끝에 성공~!
질문은 댓글 달아주세용~!
반응형'Programming > [BAEKJOON] acmicpc' 카테고리의 다른 글
10828번 스택 풀이 (0) 2018.01.13 1100번 하얀 칸 풀이 (0) 2018.01.09 1026번 보물 풀이 (0) 2018.01.03 1037번 약수 풀이 (2) 2018.01.02 1008번 A/B 풀이 (0) 2017.12.27