[BOJ] 1002: 터렛

🔒 예제

>> 3
>> 0 0 13 40 0 37
>> 0 0 3 0 7 4
>> 1 1 1 1 1 5

2
1
0

🔧 풀이

1. n = int(sys.stdin.readline().rstrip())
2. x1, y1, r1, x2, y2, r2 = map(int, sys.stdin.readline().split())
3. 문제 == 두 원의 교점 개수 찾기
	3.1 한 점에서 만난다
    3.2 두 점에서 만난다
    3.3 안 만난다
    3.4 일치한다

🔑 답안


import sys, math

n = int(sys.stdin.readline().rstrip())
for _ in range(n):
    x1, y1, r1, x2, y2, r2 = map(int, sys.stdin.readline().split())
    d = math.sqrt((x1 - x2)**2 + (y1 - y2)**2)
    lr = max(r1, r2)
    sr = min(r1, r2)
    # 한 점에서 만난다 - 외접 / 내접
    if lr + sr == d or lr - sr == d:
        print(1)
    # 두 점에서 만난다
    elif lr - sr < d < lr + sr:
        print(2)
    # 안 만난다
    elif lr + sr < d or d < lr - sr or (d == 0 and lr != sr):
        print(0)
    # 일치한다
    elif d == 0 and lr == sr:
        print(-1)

💡 개념

좋은 웹페이지 즐겨찾기