본문 바로가기
알고리즘 문제 풀이

[백준]터렛 - 복습

by pinok1o 2021. 1. 30.

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

원이 겹치는 경우, 외접하는 경우, 내접하는 경우

 

#include <stdio.h>
#include <math.h>

int main(void)
{
    int T;
    int i;
    int x1, y1, r1, x2, y2, r2;
    double distance;
    int temp_x, temp_y, temp_r;
    scanf("%d", &T);

    for (i = 0; i < T; i++)
    {
        scanf("%d %d %d %d %d %d", &x1, &y1, &r1, &x2, &y2, &r2);

        distance = sqrt((x1 - x2)*(x1 - x2)+ (y1 - y2)*(y1 - y2));

        //r2가 더 큰 반지름
        if (r1 > r2)
        {
            temp_x = x1;
            temp_y = y1;
            temp_r = r1;

            x1 = x2;
            y1 = y2;
            r1 = r2;

            x2 = temp_x;
            y2 = temp_y;
            r2 = temp_r;
        }

        if (x1 == x2 && y1 == y2 && r1 == r2) {
            printf("-1\n");
        }
        else if (distance + r1 < r2) {
            printf("0\n");
        }
        else if (distance + r1 == r2) {
            printf("1\n");
        }
        else if(distance == r1+r2){
            printf("1\n");
        }
        else if (distance > r1 + r2) {
            printf("0\n");
        }
        else {
            printf("2\n");
        }
    }

    return 0;
}

댓글