728x90
(1) 문제
- 조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다. 다음은 조규현과 백승환의 사진이다.
- 이석원은 조규현과 백승환에게 상대편 마린(류재명)의 위치를 계산하라는 명령을 내렸다. 조규현과 백승환은 각각 자신의 터렛 위치에서 현재 적까지의 거리를 계산했다.
- 조규현의 좌표 (x1, y1)와 백승환의 좌표 (x2, y2)가 주어지고, 조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오.
(2) 입력
- 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 이루어져 있다.
- 한 줄에 x1, y1, r1, x2, y2, r2가 주어진다. x1, y1, x2, y2는 -10,000보다 크거나 같고, 10,000보다 작거나 같은 정수이고, r1, r2는 10,000보다 작거나 같은 자연수이다.
(3) 출력
- 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.
(4) 예제 입력 및 출력
(5) 코드
import sys
import math
length = int(sys.stdin.readline())
def able_to_exist_count(x1, x2, y1, y2, r1, r2):
distance = math.sqrt((x2 - x1) ** 2 + (y2 - y1) **2)
if x1 == x2 and y1 == y2 and r1 == r2:
return -1
if distance > r1 + r2:
return 0
elif distance == r1 + r2:
return 1
elif distance < r1 + r2 and distance + min(r1, r2) == max(r1, r2):
return 1
elif distance < r1 + r2 and distance + min(r1, r2) > max(r1, r2):
return 2
else:
return 0
for i in range(length):
input_list = list(map(int, sys.stdin.readline().split()))
x1 = input_list[0]
x2 = input_list[3]
y1 = input_list[1]
y2 = input_list[4]
r1 = input_list[2]
r2 = input_list[5]
print(able_to_exist_count(x1, x2, y1, y2, r1, r2))
(6) 실행결과
반응형
'BaekJoon Algorithm > Python' 카테고리의 다른 글
[백준알고리즘 - 2231] 분해합 (Python) (0) | 2021.03.28 |
---|---|
[백준알고리즘 - 2798] 블랙잭 (Python) (0) | 2021.03.28 |
[백준알고리즘 - 2579] 계단 오르기 (Python) (0) | 2021.03.28 |
[백준알고리즘 - 15650] N과 M (2) (Python) (0) | 2021.03.28 |
[백준알고리즘 - 2630] 색종이 만들기 (Python) (0) | 2021.03.20 |