1. 문제정보
https://www.acmicpc.net/problem/1002
1002번: 터렛
각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.
www.acmicpc.net
2. 해결전략
1. 원과 접점의 관한 문제이다.

2. 두 점 사이의 거리(dist)와 r1, r2와의 관계
3. 제곱근의 정수형 변환 >> 습관적 정수형 변환으로 고생함 ㅠㅠ..
3. 코드
# https://www.acmicpc.net/problem/1002
# 1. 원의 접점을 구하는 문제로 보인다.
# 2. 규현, 승환이 포함 관계가 아닌 경우
# 규현, 승환의 거리 == r1+r2 => 1개
# 규현, 승환의 거리 < r1+r2 => 2개
# 규현, 승환의 거리 > r1+r2 => 0개
# 3. 규현, 승환이 포함 관계인 경우
# 규현, 승환의 거리 == abs(r1-r2) => 내부접점 1개
# 규현, 승환의 거리 < abs(r1-r2) => 0개
# 4. 같은 위치의 같은 거리인 경우 => 무한(-1)
import math
t = int(input())
input_datas = []
for _ in range(t):
input_datas.append(list(map(int, input().split())))
for x1, y1, r1, x2, y2, r2 in input_datas:
dist = math.sqrt(pow((x2-x1), 2) + pow((y2-y1),2))
# 같은 원인 경우
if x1 == x2 and y1 == y2 and r1 == r2:
print(-1)
# 규현이 승환에 포함된 경우
elif dist == abs(r1-r2):
print(1)
elif dist < abs(r1-r2):
print(0)
# 포함관계가 아닌 경우
elif dist == r1+r2:
print(1)
elif dist < r1+r2:
print(2)
elif dist > r1+r2:
print(0)'기타 > 코딩테스트' 카테고리의 다른 글
| [Python] 백준 15903번 - 카드 합체 놀이 (0) | 2023.04.18 |
|---|---|
| [Python] 백준 13305번 - 주유소 (0) | 2023.04.13 |
| [Python] 백준 1026번 - 보물 (0) | 2023.04.12 |
| [Python] 백준 1715번 - 카드정렬하기 (0) | 2023.04.02 |
| [Python] 백준 13549번 - 숨바꼭질 (0) | 2023.03.31 |