점점 문제의 난이도가 어려워지고 프로젝트기간이여서 티스토리에 코드 리뷰하는것에 소홀했었던거 같다...
이 문제는 두개의 터렛이 위치한 좌표가 주어지고 그 터렛에서 다른 터렛이 위치한 곳까지의 거리가 주어졌을 때, 그 터렛이 위치할 수 있는 경우의 수를 계산해서 결과값을 보여주는 문제이다.
각각의 터렛의 좌표와 타겟터렛까지의 거리가 미리 주어져서 터렛의 위치에서 다른 타겟 터렛이 위치할 수 있는 지점을 그려보면 원이 그려진다.
그리하여, 처음에 두개의 터렛이 주어지기 때문에 두개의 원의 위치를 이용해서 타겟 터렛의 위치할 수 있는 점의 개수를 구하기 위해서는 두 터렛사이의 거리를 알아야한다.
<두 점사이의 거리 구하는 공식>
x1, y1, r1, x2, y2, r2 = map(int,input().split())
dis = math.sqrt((x1-x2)**2 + (y1-y2)**2)
각각의 좌표와 거리를 입력받은 후에 두 점사이의 거리를 계산하여 dis 라는 변수에 저장하였다.
<두 원의 위치관계>
위의 그림과 같이 두원의 위치관계에 따라서 타겟 터렛이 위치할 수 있는 경우의 수를 계산할 수 있다.
if dis == 0 and r1 == r2: #두원이 동심원이고 반지름이 같을 때
print(-1)
elif abs(r1-r2) == dis or r1 + r2 == dis: #내접 or 외접
print(1)
elif abs(r1-r2) < dis <(r1+r2): #다른 두점에서 만날 때
print(2)
else:
print(0)
'백준 문제풀이' 카테고리의 다른 글
[백준 1181번 문제] 단어 정렬 (0) | 2022.05.10 |
---|---|
[백준 1003번 문제] 피보나치 함수 (0) | 2022.05.09 |
[백준 8958번 문제] OX퀴즈 (0) | 2022.02.18 |
[백준 2480번 문제] 주사위 세개 (0) | 2022.02.15 |
[백준 4344번 문제] 평균은 넘겠지 (0) | 2022.02.07 |