알고리즘/백준 문제풀이

[백준] 1002 터렛 파이썬 풀이 (기본 수학)

자바칩 프라푸치노 2021. 6. 24. 13:13

 

문제

  • 조규현의 좌표 (x1, y1)과 백승환의 좌표(x2,y2)가 주어지고
  • 조규현과 류재명의 거리 r1, 백승환과 류재명의 거리 r2가 주어진다.
  • 류재명이 있을 수 있는 좌표의수를 출력하라

 

문제 풀이

  • 조규현의 좌표를 중심으로 r1을 반지름으로 하는 원의 테두리의 모든 좌표가 류재명이 있을 수 있는 거리이다
  • 백승환의 좌표를 중심으로 r2를 반지름으로 하는 원의 테두리의 모든 좌표가 류재명이 있을 수 있는 거리이다.
  • 이때 두 원이 한 점에서 접하면 류재명이 있을 수 있는 좌표는 1개이다.
  • 두 원이 두점에서 접하면 류재명이 있을 수 있는 좌표는 2개이다.
  • 두 원이 접하지 않으면 류재명이 있을 수 있는 좌표는 0개이다.
  • 두 원이 일치하면 류재명이 있을 수 있는 좌표는 무한개이다.

 

코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import math
= int(input())
for i in range(n):
    x1, y1, r1, x2, y2, r2 = map(int, input().split())
    distance = math.sqrt((y2-y1)**2 + (x2-x1)**2)
    if distance == 0#원점이 같을때
        if r1== r2 : #반지름이 같으면 같은 원
            print(-1)
        else:
            print(0#반지름이 다르면 만나지 않음
    
    else:
        if distance > r1+r2 or distance< abs(r1-r2): #밖에서 만나지 않을때 or 안에서 만나지 않을때
            print(0)
        elif distance == r1+r2 or distance == abs(r1-r2): #밖에서 만날때 or 안에서 만날때
            print(1)
        elif distance < r1+r2 : # 두 점에서 겹칠때
            print(2)    
cs

두 원이 접하지 않을 때

두 원이 접할 때

두 원이 두 점에서 접할 때

728x90