문제
- 조규현의 좌표 (x1, y1)과 백승환의 좌표(x2,y2)가 주어지고
- 조규현과 류재명의 거리 r1, 백승환과 류재명의 거리 r2가 주어진다.
- 류재명이 있을 수 있는 좌표의수를 출력하라
문제 풀이
- 조규현의 좌표를 중심으로 r1을 반지름으로 하는 원의 테두리의 모든 좌표가 류재명이 있을 수 있는 거리이다
- 백승환의 좌표를 중심으로 r2를 반지름으로 하는 원의 테두리의 모든 좌표가 류재명이 있을 수 있는 거리이다.
- 이때 두 원이 한 점에서 접하면 류재명이 있을 수 있는 좌표는 1개이다.
- 두 원이 두점에서 접하면 류재명이 있을 수 있는 좌표는 2개이다.
- 두 원이 접하지 않으면 류재명이 있을 수 있는 좌표는 0개이다.
- 두 원이 일치하면 류재명이 있을 수 있는 좌표는 무한개이다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import math
n = int(input())
for i in range(n):
x1, y1, r1, x2, y2, r2 = map(int, input().split())
distance = math.sqrt((y2-y1)**2 + (x2-x1)**2)
if distance == 0: #원점이 같을때
if r1== r2 : #반지름이 같으면 같은 원
print(-1)
else:
print(0) #반지름이 다르면 만나지 않음
else:
if distance > r1+r2 or distance< abs(r1-r2): #밖에서 만나지 않을때 or 안에서 만나지 않을때
print(0)
elif distance == r1+r2 or distance == abs(r1-r2): #밖에서 만날때 or 안에서 만날때
print(1)
elif distance < r1+r2 : # 두 점에서 겹칠때
print(2)
|
cs |
두 원이 접하지 않을 때
두 원이 접할 때
두 원이 두 점에서 접할 때
728x90
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[백준] 2231 분해합 파이썬 풀이 (브루트포스) (0) | 2021.06.24 |
---|---|
[백준] 2798 블랙잭 파이썬 풀이 (브루트포스) (0) | 2021.06.24 |
[백준] 2579 계단 오르기 파이썬 풀이 (동적 계획법) (0) | 2021.06.24 |
[백준] 9663 N-Queen 파이썬 풀이 (백트래킹) (1) | 2021.06.24 |
[백준] 15650 N과 M(2) 파이썬 풀이 (백트래킹) (0) | 2021.06.24 |