sm 기술 블로그

102. 1002(터렛) 본문

문제/백준_파이썬

102. 1002(터렛)

sm_hope 2022. 6. 22. 21:34
import sys
input = sys.stdin.readline

T = int(input())
result = ""

for _ in range(T):
    x1, y1, r1, x2, y2, r2 = map(int, input().split())
    # 무한대일 경우
    if (x1 == x2 and y1 == y2 and r1 == r2):
        result += "-1" + "\n"
    # 값이 0개일 경우
    elif((x2-x1)**2 + (y2-y1)**2 < (r2-r1)**2 or (x2-x1)**2 + (y2-y1)**2 > (r2+r1)**2):
        result += "0" + "\n"
    # 값이 1개일 경우
    elif((x2-x1)**2 + (y2-y1)**2 == (r2-r1)**2 or (x2-x1)**2 + (y2-y1)**2 == (r2+r1)**2):
        result += "1" + "\n"
    # 위에 해당되지 않으면 2개
    else:
        result += "2" + "\n"

print(result)

문제요약

조규현의 좌표에서 규현이가 계산한 류재명의 거리와 백승환의 좌표에서 승환이가 계산한 류재명의 거리에서 류재명이 있을 수 있는 위치의 수는?

설명

두 원의 각 위치와 거리를 구하라는 문제와 같다.

 

1. 무한대가 나올경우 (두 점과 두 거리가 일치한다.)  : -1

2. 값이 0개일 경우 (두 원이 닿지 않는다.) : 0

3. 값이 1개일 경우 (두 원이 한 점에서 닿는다.) : 1

4. 값이 2개일 경우 (두 원이 두점에서 닿는다.) : 2

이와 같은 성질을 알고 있다면 구현하는데 어렵지 않다.

 

마지막 4번같은 경우는 else로 따로 식을 구현하지 않아도 된다.

'문제 > 백준_파이썬' 카테고리의 다른 글

104. 1358(하키)  (0) 2022.06.23
103. 1004(어린 왕자)  (0) 2022.06.23
101. 택시 기하학(3053)  (0) 2022.06.22
100. 2477(참외 밭)  (0) 2022.06.22
99. 4153(직각삼각형)  (0) 2022.06.21
Comments