본문 바로가기
온라인저지

[BOJ] 1002번 : 터렛

by plzfday 2017. 11. 16.

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


터렛문제... 방금전에 올린 '두 원의 위치관계'를 올린 이유가 여기 있다.

굉장히! 유익한 문제~ 중학교 과정에서 약했던 부분을 다시 보강한 기분이다. 


암튼 여기서 해설을 원한다면 전에 있는 글을 보길 바란다. 그 다음에 다시 오길 바란다.

아, 참고로 이 문제에서 고민해야하는 부분은 -1을 출력하는 부분인데, 그냥 x1 == x2 && y1 == y2 && r1 == r2 일 때 -1을 출력하면 된다. (잘 생각해 보면 될 것이다.) 

그리고 나머지 부분은 내 전 글에 있으므로 그냥 여기에는 코드만 올리겠다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <cstdio>
#include <cmath>
 
int main()
{
    double d;
    int T;
    int big, small;
    scanf("%d"&T);
    for (int i = 0; i < T; i++) {
        int x1, x2, y1, y2, r1, r2;
        scanf("%d %d %d %d %d %d"&x1, &y1, &r1, &x2, &y2, &r2);
        d = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
        if (r1 > r2) big = r1, small = r2;
        else big = r2, small = r1;
        if (x1 == x2 && y1 == y2) {
            if (r1 == r2) 
                printf("-1\n"); 
            else 
                printf("0\n");
            continue;
        }
        if (big - small < d && d < big + small) 
            printf("2\n");
        else if (small + big == d || big - small == d) 
            printf("1\n"); 
        else if (small + big < d || d < big - small) 
            printf("0\n");
    }
    return 0;
}
cs

다른 분들 코드를 보니깐 나보다 더 짧던데 나는 도저히 모르겠다...

math.h을 안 쓰고 그냥 sqrt x = y -> x = y * y 처럼 풀면 될 것 같기도 한데, 일단 보류.

댓글