알고리즘 공부/백준
(Python)백준 코딩테스트 연습 - 터렛(1002)
HRuler
2023. 1. 22. 21:38
1. 문제
https://www.acmicpc.net/problem/1002
1002번: 터렛
각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.
www.acmicpc.net
2. 풀이
import math
import sys
input = sys.stdin.readline
# n : 테스트 개수
n = int(input())
for i in range(n):
x1, y1, r1, x2, y2, r2 = map(int, input().split())
if x1 == x2 and y1 == y2:
if r1 == r2:
print(-1)
elif r1 != r2:
print(0)
else:
dist = math.sqrt(((x2-x1) ** 2) + ((y2-y1) ** 2))
if dist > (r1 + r2) or dist + r1 < r2 or dist + r2 < r1:
print(0)
elif dist == (r1 + r2) or dist == abs(r1 - r2):
print(1)
elif dist < (r1 + r2):
print(2)
3. 후기
- 첫 실버3단계 문제이다.
단계가 올라가서 그런지 첫 문제부터 난이도가 올라간것을 느낄 수 있었다.
문제는 입력에서 주어진 두 좌표간의 거리와 r1, r2 값을 비교하여 출력을 달리하는 것으로 해결할 수 있었다.
두 좌표 간 거리는 x 좌표 차이 제곱 + 좌표 차이 제곱의 제곱근을 사용하여 구하였다.