반응형
https://www.acmicpc.net/problem/1002
터렛 문제
두 점의 좌표와 각각의 좌표로부터 거리가 주어졌을 때, 가능한 좌표의 수를 출력하는 문제
그림을 그려보고, 수학적으로 접근하면 쉽게 풀 수 있던 문제
내가 푼 정답코드
import sys, math
T = int(sys.stdin.readline())
for _ in range(T):
x1, y1, r1, x2, y2, r2 = map(int, sys.stdin.readline().split())
distance = math.sqrt((x1-x2)**2 + (y1-y2)**2) # 두 점의 거리
if distance == 0 and r1 == r2: # 거리가 0이고 두 점으로부터의 거리가 같으면
print(-1) # 무한개
elif abs(r1-r2) < distance < r1+r2: # 두 점으로부터의 거리 합 사이에 있으면
print(2) # 2개
elif distance == r1 + r2 or abs(r1-r2) == distance: # 겹치면
print(1) # 1개
else: # 아니면
print(0) #없음
수학적인 문제로 두 원의 교점의 갯수를 구하는 문제와 동일하다
두 원이 겹칠 경우 무한개
두 원이 겹치지 않고, 거리 합 사이에 있으면 2개
두 원이 겹치지 않고, 접하면 1개
두 원이 겹치지 않고, 포개지지 않으면 0개
를 코드로 구현하면 되는 간단한 문제
느낀 점
수학적인 문제라 쉽게 접근했던 문제, 크게 코딩적인 기술을 사용하기보단 수학적인 지식을 활용해서 구현하는 문제여서 큰 어려움없이 풀었다.
반응형
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준 1063] 킹 (python) (0) | 2023.03.09 |
---|---|
[백준 1004] 어린 왕자 (python) (0) | 2023.03.08 |
[백준 1003] 피보나치 함수 (python) (0) | 2023.03.07 |
[백준 2206] 벽 부수고 이동하기(python) (0) | 2023.03.05 |
[백준 17281] ⚾ 야구 (python) (0) | 2023.03.05 |
댓글