728x90
[파이썬] 백준 1002 : 터렛
https://www.acmicpc.net/problem/1002
실버 4
기하학, 수학
학교 다닐 때 배우는 두 원의 위치 관계를 이용해 풀 수 있는 문제.
이곳을 참고해서 풀었다.
코드
import sys
N = int(sys.stdin.readline())
for _ in range(N):
x1, y1, r1, x2, y2, r2 = map(int, sys.stdin.readline().split())
S = ((x2-x1)**2 + (y2-y1)**2)**0.5
if r1 == r2 and S == 0:
print(-1)
elif S > r1 + r2 or S < abs(r1 - r2):
print(0)
elif S == r1 + r2 or S == abs(r1 - r2):
print(1)
elif abs(r1 - r2) < S < r1 + r2:
print(2)
abs는 ()안의 값에 대한 절댓값을 반환한다. r1과 r2 둘 중에 어느 반지름의 크기가 더 큰지 따로 조건식을 세울 필요가 없다.
S는 두 원 사이의 거리이다.
**0.5는 루트와 같다.
무한대의 경우를 생각해내기가 조금 힘들었는데, 두 원이 완전히 같은 원이면 어느 점에서나 무한대로 존재하게 된다.
따라서 두 반지름의 크기가 같고, 두 원 사이의 거리가 같을 경우가 무한대인 경우이다.
이 부분에서 많이 틀려서 정답률이 낮은 문제가 아닐까 싶다.
728x90
'알고리즘 문제 풀이' 카테고리의 다른 글
[파이썬] 백준 1010 : 다리 놓기 (0) | 2022.03.04 |
---|---|
[파이썬] 백준 1037 : 약수 (0) | 2022.03.03 |
[파이썬] 백준 2805 : 나무 자르기 (0) | 2022.02.28 |
[파이썬] 백준 1966 : 프린터 큐 (0) | 2022.02.27 |
[파이썬] 백준 1929 : 소수 구하기 (0) | 2022.02.27 |