1 minute read

[no-alignment]

구현 방식

  • 해당 거리를 원이라고 생각하면 아래와 같다.
    • 일치할 때
    • 외접할 때
    • 내접할 때
    • 포함 관계일 때
    • 외부에 있을 때
    • 둘이 교차할 때

코드

  • 최종 코드는 아래와 같다.
#include <bits/stdc++.h>

using namespace std;


int getDistSquared(pair<int, int>& p1, pair<int, int>& p2);


int main() {

    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    int N;
    cin >> N;

    pair<int, int> p1, p2;
    int d, d1, d2, d1pd2,d1md2;
    while (N--)
    {
        cin >> p1.first >> p1.second >> d1;
        cin >> p2.first >> p2.second >> d2;
        d1pd2 = (d1 + d2) * (d1 + d2);
        d1md2 = (d1 - d2) * (d1 - d2);
        d = getDistSquared(p1, p2);

        // 일치할 때
        if (d == 0 && d1 == d2)
            cout << "-1" << "\n";
        // 외접 할 때
        else if (d1pd2 == d)
            cout << "1" << "\n";
        // 외부에 있을 때
        else if (d1pd2 < d)
            cout << "0" << "\n";
        else
        {
            // 내접 할 때
            if (d == d1md2)
                cout << 1 << "\n";
            // 포함 관계일 때
            else if (d < d1md2)
                cout << 0 << "\n";
            // 교차할 때
            else
                cout << 2 << "\n";
        }
    }

    return 0;
}


int getDistSquared(pair<int, int>& p1, pair<int, int>& p2)
{
    return (p1.first - p2.first) * (p1.first - p2.first) + (p1.second - p2.second) * (p1.second - p2.second);
}