PS/BOJ

[백준 BOJ] 1002 터렛

Jubil 2018. 10. 26. 20:42
반응형

1002_터렛

링크

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

 

풀이


 

이 문제는 GPS 원리를 이용한 문제입니다.

2차원 평면이기 때문에 원래 3개의 터렛이 존재한다면 위치를 구할 수 있겠지만, 2개의 터렛만 있습니다.

 

이 문제는 두 원의 교점이 류재명이 있을 수 있는 위치가 됩니다.

두 원의 교점의 개수를 구하기 위해서 두 원의 위치 관계를 잘 이용해서 풀면 됩니다.

 

우선 거리와 반지름을 알아내야 합니다.

그리고 두 원이 일치할 때, 두 점에서 만날 때, 접할 때, 만나지 않을 때를 체크해서 구하면 됩니다.

 

코드

 

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

32

33

34

35

36

37

38

39

40

41

42

43

44

#include <cstdio>

#include <math.h>

#include <algorithm>

using namespace std;

 

int T, x, y, xx, yy;

double d, r, rr;

 

int main() {

    scanf("%d"&T);

 

    while (T--) {

        scanf("%d %d %lf %d %d %lf"&x, &y, &r, &xx, &yy, &rr);

 

        if (r > rr) swap(r, rr);    //r1 <= r2

        d = sqrt((xx - x)*(xx - x) + (yy - y)*(yy - y));

 

        if (d == 0 && r == rr) {    //일치

            printf("-1\n");

        }

 

        else if (rr-< d && rr+> d) {    // 점에서 만남

            printf("2\n");

        }

 

        else if (rr - r == d) {    //내접함

            printf("1\n");

        }

 

        else if (rr + r == d) {    //외접함

            printf("1\n");

        }

 

        else if (rr + r > d) {        //만나지 않음

            printf("0\n");

        }

 

        else if (rr - r < d) {        //포함 관계

            printf("0\n");

        }

    }

 

    return 0;

}

Colored by Color Scripter

cs

 



반응형

'PS > BOJ' 카테고리의 다른 글

[백준 BOJ] 1026 보물  (0) 2018.10.28
[백준 BOJ] 1009 분산처리  (0) 2018.10.27
[백준 BOJ][DP] 2167 2차원 배열의 합  (2) 2018.08.21
[백준 BOJ][DP] 9465 스티커  (0) 2018.08.21
[백준 BOJ][DP] 1149 RGB거리  (0) 2018.07.28