728x90
📢 문제 설명
문제를 요약하자면 두 개의 원의 중점의 좌표와 반지름의 길이를 입력하고, 두 개의 원의 접점의 개수를 출력하면 된다.
만약 접점이 무한개(= 중점의 좌표 동일 & 반지름 길이 동일)인 경우 -1을 출력한다.
✏️ 코드 풀이
def turret():
x1, y1, r1, x2, y2, r2 = map(int, input().split())
d = (pow(x1-x2,2)+pow(y1-y2,2))**(1/2)
r_list = [r1, r2, d]
m = max(r_list)
r_list.remove(m)
if r1==r2 and d == 0:
print(-1)
elif m < sum(r_list):
print(2)
elif m == sum(r_list):
print(1)
else:
print(0)
T = int(input())
for x in range(T):
turret()
- 각 거리들을 리스트(r_list)로 저장한다.
변수 d는 각 원의 중심의 거리를 구한 값이다.d = (pow(x1-x2,2)+pow(y1-y2,2))**(1/2) r_list = [r1, r2, d]
- pow 함수를 사용해 각 x, ,y 좌표 사이의 거리의 제곱값을 구했지만, 이외에도 (x1-x2)**2도 가능하다.
문제를 풀 때는 삼각형 세 변의 길이에 대한 특징을 활용해야 하므로 세 길이(반지름과 중점 사이 거리)를 r_list에 저장한다. - 최대 길이를 구한다.
max 함수를 사용해 r_list의 최대값을 구한다. 다시 말해, 세 변의 길이 중 가장 긴 변의 길이를 변수 m에 저장한다.m = max(r_list) r_list.remove(m)
이를 구분하기 위해 최대값은 리스트에서 제거한다. - 삼각형의 세 변의 길이에 대한 특징을 활용해 접점의 개수를 구분한다.
SMALL
'Programming > Python' 카테고리의 다른 글
[백준/python3] 1929. 소수 구하기 (에라토스테네스의 체) (0) | 2022.01.20 |
---|---|
[백준/python3] 1316. 그룹 단어 체커 (0) | 2022.01.10 |
[백준/python3] 2941. 크로아티아 알파벳 (0) | 2022.01.09 |
[백준/python3] 1157.단어 공부 (0) | 2022.01.08 |
[백준/python3] 2675. 문자열 반복 (0) | 2022.01.07 |