본문 바로가기
알고리즘

[백준 파이썬 1002] 백준 python 터렛 1002번

by 새우하이 2020. 11. 15.

 

x1,y1,r1,x2,y2,r3 으로 상대편 마린의 위치를 계산하는 문제임.

 

그림으로 그려보니 두 원의 접점을 구하는 문제임이 보였다.

mathbang.net/101

 

두 원의 위치관계, 내접, 외접

위치관계 또 나오네요. 이번에는 두 원의 위치관계에요. 위치관계 마지막이니까 정신 바짝 차리고 따라오세요. 원과 직선의 위치관계, 원의 할선과 접선, 접점에서 했던 것처럼 두 원이 어떤 관

mathbang.net

두 원이 2점에서 만나는 경우, 1점에서 만나는경우와 만나지 않는 경우 그리고 겹쳐서 무한대일 경우가 있을 것이다. 출력 부분을 보면 무한대일 경우 -1 을 출력하라고 했다.

 

import sys
T = int(sys.stdin.readline())
for i in range(T):
    x1, y1, r1, x2, y2, r2 = map(int, (
        sys.stdin.readline().split(' ')))

    distance = ((x2-x1)**2 + (y2-y1)**2)**0.5
    if x1 == x2 and y1 == y2:
        if r1 == r2:
            print(-1)
        else:
            print(0)
        continue
    if r1+r2 == distance or abs(r2-r1) == distance:
        print(1)
    elif r1+r2 < distance or distance < abs(r2-r1):
        print(0)
    else:
        print(2)

 

두 원의 중심사이의 거리를 distance에 저장했다. 

그리고 두 원의 중심점이 같은경우 중 반지름의 길이가 같으면 무한대로 만나기 때문에 -1을 출력하고 아니라면 만나지 않을 것이다. 

continue로 아래의 코드를 건너 뛴다.

이 경우가 아니라면 두 원이 한점에서 만나거나(외접 ,내접) 만나지 않거나(원의 내부에 있거나, 외부에 있거나), 두 점에서 만나는 경우에 대해 출력해주면 된다.

 

댓글