티스토리 뷰

IT/Coding

백준 1002번 / 터렛 / 파이썬 (Python)

Future Engineer 2022. 9. 15. 01:31
반응형

[조건]

 

[예상/요구 결과]*Case 개수를 넣고 그 뒤 6개의 수를 Case 개수만큼 입력한다
(아래는 3을 입력했고 6개의 수를 3회 입력함)

 

 

[코드]

import math
t = int(input())

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

* map, sqrt, abs의 사용 이유 이해할 것 !

 

 

[주의사항]

1. 해당 문제는 첫번째로 평면 좌표 상에서 두 점 사이의 거리를 구하는 문제입니다.
2. 두번째로 각 점을 중심으로 하는 '원'의 위치 관계에 대한 이해가 있어야 합니다.
3. 원의 위치 관계에서 2점에서 만나는지, 1점에서 만나는지(외접/내접), 아니면 아예 만나지 않는지 이해해야 합니다.
4. A점 기준에서 B점까지의 거리와 접점뿐만 아니라 B점 기준에서 A점까지의 거리와 접점도 계산 해 보아야 합니다.

 

[추가 정보]

1. 교점이 0개인 경우

r + r` < d
r - r` > d

2. 교점이 1개인 경우

r + r` = d

 

r - r` = d

3. 다른 두 점에서 만나는 경우 ( 교점이 2개인 경우 )

r - r` < d < r + r`

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함