알고리즘 공부/백준

(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 좌표 차이 제곱 +  좌표 차이 제곱의 제곱근을 사용하여 구하였다.