알고리즘/알고리즘문제

[알고리즘] 백준 1002 터렛 파이썬

Unipiz 2022. 7. 18. 17:13

백준 1002 터렛 파이썬

https://www.acmicpc.net/problem/1002

 

1002번: 터렛

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

www.acmicpc.net

 

접근

중학교3학년인가 풀었던 수학문제랑 같았다.

1. 두 원이 겹쳐 있을 때,

2. 두 원이 떨어져 있을 떄,

3. 위의 두 케이스에서 접 점일 때,

4. 중심점이 같고 반지름 길이가 다를 때

를 고려하면 풀린다.

 

import sys
import math
input=sys.stdin.readline
for _ in range(int(input())):
    a=list(map(int,input().split())) # 0 1 2 // 3 4 5
    b=math.sqrt((a[3]-a[0])*(a[3]-a[0])+(a[4]-a[1])*(a[4]-a[1]))
    if b==0 and a[2]==a[5]:
        print(-1)
        continue
    elif b==0 and a[2]!=a[5]:
        print(0)
        continue

    if b+min(a[2],a[5])==max(a[2],a[5]):
        print(1)
        continue
    elif b+min(a[2],a[5])<max(a[2],a[5]):
        print(0)
        continue

    if a[2]+a[5]>b:
        print(2)
    elif a[2]+a[5]<b:
        print(0)
    elif a[2]+a[5]==b:
        print(1)

 

 

>> 백준의 '기하' 파트 중 한 문제이다.

간만에 좌표를 그리고 수학문제 풀 듯 푸니까 재밌고 좋았다.

단순 구현력을 연습하는 문제로 딱이다.