728x90
문제
1002번: 터렛
각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.
www.acmicpc.net
코드
#math를 가져온다
import math
n = int(input())
for _ in range(n):
#사용할 변수를 선언
x1, y1, r1, x2, y2, r2 = map(int, input().split())
# 두 원의 거리를 구하는 공식에 대입한 수식
#'sqrt'는 제곱근 함수, 'math.sqrt(x)'를 하면 x의 제곱근을 반환
distance = math.sqrt((x1-x2)**2 + (y1-y2)**2)
#두 원이 동심원이고 반지름이 같으면
if distance == 0 and r1 == r2 :
#무제한으로 그 수가 많으므로 문제 조건에 따라 -1을 반환
print(-1)
#두 원이 내접, 외접이라 1개만 겹칠 경우
elif abs(r1-r2) == distance or r1 + r2 == distance:
print(1)
#두 원이 서로 다른 두 점에서 만날 경우
elif abs(r1-r2) < distance < (r1+r2) :
print(2)
#그 외의 경우(안 만나는 경우)
else:
print(0)
1. 두 좌표 사이의 거리를 구하는 방법
2. 두 원의 점이 개수를 구분
점의 개수가 무한대인경우
- 두 원의 크기가 같은 경우 d=0, r = r
점이 1개에서 만나는 경우
- 외접
- 내접
점이 2개에서 만나는 경우
- 'r−r′<d<r+r′ 인 경우
점이 안 만나는 경우
- 동심원인 경우
- 내부에 포함인 경우
- 외부에서 만나지 않는 경우
'프로그래밍 > 알고리즘' 카테고리의 다른 글
백준 1260- DFS와 BFS 파이썬 (0) | 2022.11.30 |
---|---|
백준 9012 괄호 파이썬 (0) | 2022.11.29 |
프로그래머스 - A로 B 만들기 파이썬 (1) | 2022.11.25 |
프로그래머스 - 로그인 성공? 파이썬 (0) | 2022.11.24 |
프로그래머스 - 겹치는 선분의 길이 파이썬 (0) | 2022.11.23 |
댓글