코딩테스트 연습/백준

[백준] 1002번 : 터렛 in python 파이썬 코드 및 설명

슈퍼짱짱 2019. 10. 10. 08:00
반응형

파이썬으로 백준풀기 : 1002번 터렛



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




코드


1
2
3
4
5
6
7
8
= int(input())
 
for i in range(n) :
    x1, y1, r1, x2, y2, r2 = map(int, input().split())
    r = ((x1-x2)**2 + (y1-y2)**2)**(1/2)
    R = [r1,r2,r]
    m=max(R); R.remove(m)
    print(-1 if (r==0 and r1==r2) else 1 if (r == r1+r2 or m==sum(R)) else 0 if (m > sum(R)) else 2)
cs




코드설명


총 네 가지 경우의 수가 있다. (두 원의 중점 사이의 거리를 r이라 하자.)


-1 : 두 원이 일치하는 경우

r==0 & r1==r2



1 : 두 원이 한 점에서 만나는 경우 (외접, 내접)

(r == r1 + r2) or (r2 == r + r1)



0 : 두 원이 만나지 않는 경우

r, r1, r2 중 가장 긴 값이 나머지 두 값의 합 보다 큰 경우



2 : 두 원이 두 점에서 만나는 경우

위 세 가지 경우가 아닌 경우


반응형