아이공의 AI 공부 도전기

[Baekjoon] 1002번 : 터렛 (Python, 기하학)

 

     

 

 

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

 

1002번: 터렛

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

www.acmicpc.net

코드 링크

https://github.com/stellaluminary/Baekjoon

 

GitHub - stellaluminary/Baekjoon

Contribute to stellaluminary/Baekjoon development by creating an account on GitHub.

github.com

 

Python

 

방법 1 - 메모리 30840KB / 시간 88ms / 코드 길이 325B

 

본 문제는 2개의 터렛과 그 반경에 대한 겹침이 있는 개수를 구하는 문제이다.

내접과 외접, 동치를 모두 고려해야 한다.

 

이때 동치일 경우 즉, 같은 원으로 포개질 경우 그 좌표는 무한대이므로 -1을 출력한다.

만약 두 원의 중심간의 거리가 두 반지름의 거리의 합과 같거나 두 반지름의 거리의 차이와 같다면 1을 출력한다. (1개 점이 겹침)

만약 두 원의 중심간의 거리가 두 반지름의 거리의 합보다 크거나 두 반지름의 거리의 차이보다 작다면 0을 출력한다. (겹침이 없음)

그 외 2 출력

 

그림 참조

https://itstory1592.tistory.com/33

 

[백준/파이썬] 1002번 문제 '터렛'

https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acm

itstory1592.tistory.com

 

for i in range(int(input())):
    x1,y1,r1,x2,y2,r2 = map(int, input().split())
    dist = ((x1-x2)**2 + (y1-y2)**2)**0.5
    if dist == 0 and r1 == r2:
        print(-1)
    elif dist == (r2+r1) or dist == abs(r2-r1):
        print(1)
    elif dist > (r2+r1) or dist < abs(r2-r1):
        print(0)
    else:
        print(2)

 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading