[백준 1002번][Python/파이썬] 터렛

공학도 Lee·2023년 2월 8일
0

백준 문제 풀이

목록 보기
31/63

1. 문제


출처: 백준 1002번 터렛

2. 풀이


제 2 코사인 법칙
cosA=b2+c2a2bccosA = \frac{b^2 + c^2 - a}{2bc}

위의 그림과 같이 제2 코사인법칙을 사용해서 coscos 값을 구해 어떤 가능성이 있는지 찾았다.

  1. 1<cosA<1-1<cosA<1 이라면 원이 만나는 지점이 양쪽으로 2개 생길 수 있다.
  2. cosA=1cosA = -1 oror 11 이라면 두 원이 접해서 두 좌표의 직선상에 1개 생길 수 있다.
  3. 만약에 r1=r2r_1 = r_2이고 두 좌표가 같다면, 같은 점에 있으면서 같은 원을 그리므로 무한대의 가능성이 생긴다.
  4. 그 외의 값은 불가능한 경우이다.

3. 소스코드


case = int(input())
for _ in range(case):
    x1,y1,r1,x2,y2,r2 = map(int,input().split())
    b = r1
    c = r2
    a = (x1-x2)**2+(y1-y2)**2
    cosA = (b**2 + c**2 - a)/(2*b*c)
    if b == c and a ==0:
        print(-1)
    elif cosA == -1 or cosA ==1:
        print(1)
    elif -1 < cosA and cosA < 1:
        print(2)
    else:
        print(0)

4. 그 외


다른 분들 풀이를 보니, 괜히 복잡하게 풀었나라는 생각도 들었다.

profile
이창민, Changmin Lee

0개의 댓글