알고리즘 풀이/백준
[백준 1002] 터렛 (python)
char_lie
2023. 3. 8. 17:14
반응형
https://www.acmicpc.net/problem/1002
1002번: 터렛
각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.
www.acmicpc.net
터렛 문제
두 점의 좌표와 각각의 좌표로부터 거리가 주어졌을 때, 가능한 좌표의 수를 출력하는 문제
그림을 그려보고, 수학적으로 접근하면 쉽게 풀 수 있던 문제
내가 푼 정답코드
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개
를 코드로 구현하면 되는 간단한 문제
느낀 점
수학적인 문제라 쉽게 접근했던 문제, 크게 코딩적인 기술을 사용하기보단 수학적인 지식을 활용해서 구현하는 문제여서 큰 어려움없이 풀었다.
반응형