ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.