백준 1002 터렛 c++

Kkackit·2022년 2월 5일
0

Beakjoon

목록 보기
31/33

https://www.acmicpc.net/problem/1002

너무 어렵다 ㅠ
두 원의 위치관계를 이용해서 풀어야하는 문제.

#include<iostream>
using namespace std;


int main(void)
{
    int T = 0;
    cin>>T;

    //-10000 <= x1,y1,x2,y2 <= 10000
    // r1,r2 <= 10000
    int x1 = 0;
    int y1 = 0;
    int r1 = 0;

    int x2 = 0;
    int y2 = 0;
    int r2 = 0;

    int result[T];


    for(int i = 0; i < T; i++)
    {
        int count = 0;        
        cin>>x1;
        cin>>y1;
        cin>>r1;
        cin>>x2;
        cin>>y2;
        cin>>r2;

        if(r1 > r2)
        {
            int temp = r1;
            r1 = r2;
            r2 = temp;
        }
        int center_Distance = (x1-x2)*(x1-x2) + (y1-y2) * (y1-y2);
        if(((r2 - r1)*(r2 - r1) < center_Distance) && (center_Distance < (r1 + r2)*(r1 + r2)))
        {
            result[i] = 2;
        }
        else if(center_Distance == (r1 + r2)*(r1 + r2))
        {
            result[i] = 1;
        }
        else if((center_Distance == (r2 - r1)*(r2 - r1)) && (center_Distance != 0))
        {
            result[i] = 1;
        }
        else if(center_Distance < (r2 - r1)*(r2 - r1))
        {
            result[i] = 0;
        }
        else if(center_Distance > (r1 + r2)*(r1 + r2))
        {
            result[i] = 0;
        }
        else if((center_Distance == 0) && (r1 == r2))
        {
            result[i] = -1;
        }
    }

    for(int i = 0; i < T; i++)
    {
        cout<<result[i]<<endl;
    }
}

0개의 댓글