====== 터렛 ====== ===== 풀이 ===== * 각 터렛을 기준으로 마린이 있을수 있는 좌표의 범위를 그려보면, 반지름이 r인 원으로 나타난다. 두개의 원의 교점의 갯수를 구하면 된다. * 중점간의 거리와 두 반지름의 합 또는 차에 따라서, 두 원은 두 점에서 만나거나, 접하거나 (내접 or 외접), 접하지 않거나 (멀리 떨어져 있거나 한 원이 다른 원 안에 포함되거나), 일치하거나 할 수 있다. 각각의 조건은 그냥 그림을 그려보면 쉽게 파악 가능하고, 거기에 맞춰서 조건 분기를 하는 코드를 짜면 끝. ===== 코드 ===== """Solution code for "BOJ 1002. 터렛". - Problem link: https://www.acmicpc.net/problem/1002 - Solution link: http://www.teferi.net/ps/problems/boj/1002 """ def main(): T = int(input()) for _ in range(T): x1, y1, r1, x2, y2, r2 = [int(x) for x in input().split()] dist = (x1 - x2) ** 2 + (y1 - y2) ** 2 r_sum, r_diff = (r1 + r2) ** 2, (r1 - r2) ** 2 if dist == 0 and r1 == r2: print('-1') elif r_diff < dist < r_sum: print('2') elif dist in (r_diff, r_sum): print('1') else: print('0') if __name__ == '__main__': main() {{tag>BOJ ps:problems:boj:실버_4}}