반응형

 

 

 

이게 웬 난리.....

 

 

www.acmicpc.net/problem/1002

 

1002번: 터렛

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

www.acmicpc.net

 

 

파이썬 코드

n = (int)(input())

for i in range(n):
    x1, y1, r1, x2, y2, r2 = map(int, input().split())

    # 피타고라스 거리 : y
    y = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5
    rs = r1 + r2
    rm = abs(r1 - r2)

    if y == 0:
        if r1 == r2:
            print(-1)
        else:
            print(0)
    else:
        if rs == y or rm == y:
            print(1)
        elif rs > y and rm < y:
            print(2)
        else:
            print(0)

 

두 점이 같고, 거리도 같으면 완전히 원이 겹치기 때문에 -1

두 점이 같고, 거리는 다르면 겹치는 점이 하나도 없기 때문에 0

 

두 거리를 합한 값이 두 점 사이의 거리와 같거나(두 원이 맞닿아 만남),

두 거리의 차이가 두 점 사이의 거리와 같으면(한 원이 다른 원을 포함하면서 한 점에서 겹침)

한 점에서 만나기 때문에 1

 

두 거리의 합이 두 점 사이의 거리보다 크면서, 두 거리의 차이가 두 점 사이의 거리보다 작으면

두 점에서 만나기 때문에 2

=> 여기서 뒤에 조건을 설정해주지 않아 계속 틀렸는데요 ㅠㅠ

만약 두 거리의 차이가 두 점 사이의 거리보다 크면 한 원이 다른 원을 완전히 포함하기 때문에 만나는 점이 없습니다.

 

그 이외에서는 모두 0

 

 

 

 

새롭게 알게된 사실 )

제곱근 구할 때, 굳이 import math해서 구하지 않아도 ** 0.5 해주면 구할 수 있습니다..!

 

 

 

 

 

 

 

반응형

+ Recent posts