728x90
반응형
SMALL
문제
이석원은 조규현과 백승환에게 상대편 마린(류재명)의 위치를 계산하라는 명령을 내렸다. 조규현과 백승환은 각각 자신의 터렛 위치에서 현재 적까지의 거리를 계산했다.
조규현의 좌표 (x1,y1) 와 백승환의 좌표 가 주어지고, 조규현이 계산한 류재명과의 거리 과 백승환이 계산한 류재명과의 거리 가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오.
풀이
- 주어진 두 점의 거리는 구하는 공식을 이용하여 두 점의 거리를 계산 = length
- 주어진 반지름의 차이를 계산 = diff
- 이 두변수를 사용하여 두개의 원 접점이 하나인지 혹은 동일한 원인지, 혹은 두개인지를 알 수 있다.
- 만약 두점의 거리가(length) 두 반지름의 차이보다 크고 두 반지름의 합보다 크다면 접접은 두개
- diff< length and length < r1+r2
- 만약 반지름의 두 합과 length가 같거나 주 반지름의 차이가(diff) length와 같은 경우 접점은 1개
- length == r1 + r2 or length == diff
- 만약 length가 0 이고 두 반지름의 길이가 같다면 둘은 같은 원이므로 -1
- length == 0 and r1 == r2
- 위의 조건을 충족하지 못한 입력은 접점이 없으므로 0을 출력해야 한다.
from math import sqrt
N = int(input())
answer = []
for _ in range(N):
x1, y1, r1, x2, y2, r2 = map(int, input().split())
length = sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2)
diff = abs(r1 - r2)
if length == 0 and r1 == r2:
answer.append(-1)
elif length == r1 + r2 or diff == length:
answer.append(1)
elif diff < length < r1 + r2:
answer.append(2)
else:
answer.append(0)
for i in range(N):
print(answer[i])
- 파이썬에서 제곱근을 어떻게 사용하지 못하여 찾아본 사이트
- https://coding-factory.tistory.com/97
728x90
반응형
LIST
'알고리즘 && 자료구조 > 백준' 카테고리의 다른 글
[백준 11279] 최대 힙 (Feat.Python) (0) | 2024.01.03 |
---|---|
[백준 10828] 스택(Feat. Python) (0) | 2023.10.25 |
[백준 10813] 공바꾸기(Feat. Python) (0) | 2023.10.25 |
[백준 10825] 국영수(Feat.Python) (0) | 2023.10.25 |
[백준 14215] 세 막대 (Feat.Python) (0) | 2023.10.24 |