반응형
문제 접근
- 고등학교 때 배운 수학 중 원의 특성에 대해 알고 있어야 이 문제를 풀 수 있다.
- 처음엔 단순이 거리로 비교할 수 있을 것이라 생각하고 피타고라스 정리로 접근하여서 실패하였으나 원으로 바꿔서 풀이에 성공하였다.
스케치
코드
# 터렛
import sys, math
T = int(sys.stdin.readline().rstrip())
for _ in range(T):
data = list(map(int, sys.stdin.readline().rstrip().split())) # x1,y1,r1,x2,y2,r2
jo = data[0:3]
baek = data[3:]
# 조규현 백승환 터렛 근무 직원
# 이석원 (명령자) 조규현 백승환에게 류재명의 위치를 찾으라
# 조규현 좌표, 류재명과의 거리 (x1, y1, r1) 백승환 좌표(x2,y2,r2)
# 류재명이 있을 수 있는 좌표의 수를 출력하시오
# (0,0,13) (40,0,37) -> 2
# (0,0,3) (0,7,4) -> 1
# (1,1,1) (1,1,5) -> 0
def getCount(v1, v2):
length = math.sqrt((v2[0] - v1[0]) ** 2 + (v2[1] - v1[1])** 2)
rOut = v2[2] + v1[2]
rIn = abs(v2[2]- v1[2])
# 1 두 원이 떨어져있을 때
if length > rOut:
return 0
# 2 두 원이 외접할 때
if length == rOut:
return 1
# 3 두 원이 포개져 있을 때
if length < rOut:
# 6 두 원이 같은 원일 때
if v1[0] == v2[0] and v1[1] == v2[1] and v1[2] == v2[2]:
return -1
# 3 두원이 두 점에서 만날 때
if length > rIn:
return 2
# 4 두 원이 내접할 때
if length == rIn:
return 1
# 5 한 원이 다른 원을 포함할 때
if length < rIn:
return 0
print(getCount(jo,baek))
'코딩테스트 > 파이썬' 카테고리의 다른 글
[백준] [브루트포스] 분해합 2231 (파이썬) (0) | 2021.03.15 |
---|---|
[백준] [조합] 블랙잭 2798 (파이썬) (0) | 2021.03.15 |
[백준] [DP] 계단오르기 2579 (파이썬) (0) | 2021.03.15 |
[백준] [조합] N과 M(2) 15650 (파이썬) (0) | 2021.03.15 |
[백준] 색종이 만들기 2630 (파이썬) (0) | 2021.03.15 |