[파이썬] 백준 1002 : 터렛 (실버3)
1002번: 터렛
각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.
www.acmicpc.net
문제
이 문제는 웰 노운이군요 ㅋㅋㅋㅋ
이전에 풀었던 두 원 문제에서 넓이 대신 교점을 구하는 문제
풀이
0. 방향성 생각
편하게 풀기 위해서 큰 원을 원점에, 다른 한 원을 x축 양수부분에 올려놓는다
t = int(input())
for i in range(t):
x1,y1,r1,x2,y2,r2 = map(int,input().split())
if x1==x2 and y1==y2 : # 동심원인경우
if r1==r2 :
if r1==0 and r2==0: # 반지름 0
print(1)
else : # 반지름 양수
print(-1)
else :
print(0)
else :
if r1 < r2 : # 큰거를 원점에, 작은거를 x축 위에
x1,y1,r1,x2,y2,r2 = x2,y2,r2,x1,y1,r1
d = ((x2-x1)**2+(y2-y1)**2)**0.5
x1,y1 = 0,0
x2,y2 = d,0
if r1 <= x2 : # 작은원이 바깥에
if x2-r2 > r1 : # 안만남
print(0)
elif x2-r2 == r1: # 점함
print(1)
else :
print(2) # 두점에서 만남
else : # 작은원이 안쪽에
if x2+r2 < r1 : # 안만남
print(0)
elif x2+r2 == r1 :
print(1)
else :
print(2)
코멘트
어렵다기 보다는 변수도 많고 케이스를 나눌게 많아서 실수하기 쉬운문제
'Algorithm > etc' 카테고리의 다른 글
[파이썬] 백준 1992 : 쿼드트리 (실버1) (0) | 2023.06.05 |
---|---|
[파이썬] 백준 1780 : 종이의 개수 (실버2) (0) | 2023.06.05 |
[파이썬] 백준 2630 : 색종이 만들기 (실버2) (0) | 2023.06.05 |
[파이썬] 백준 3273 : 두 수의 합 (실버3) (0) | 2023.05.27 |
[파이썬] 백준 10819 : 차이를 최대로 (실버) (0) | 2023.05.26 |
[파이썬] 백준 2559 : 수열 (실버3) (0) | 2023.05.24 |
[파이썬] 백준 7869 : 두 원 (골드2) (0) | 2023.05.17 |
댓글