Algorithm/백준
백준 1002번: 터렛(Swift)
콩벌레 개발자
2021. 9. 4. 16:45
https://www.acmicpc.net/problem/1002
1002번: 터렛
각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.
www.acmicpc.net
두 원의 외접, 내접, 한점에서 만나는 경우를 푸는 알고리즘. 문제만 이해하면 쉽게 풀 수 있다. 중학생때 배웠던것 같기도 하고..
import Foundation
var cicleNum = Double(readLine()!)!
for _ in 1...Int(cicleNum){
var coordinate = readLine()?.split(separator: " ").map{Int($0)!}
var x = (coordinate![3]-coordinate![0])*(coordinate![3]-coordinate![0])
var y = (coordinate![4]-coordinate![1])*(coordinate![4]-coordinate![1])
var joAndRewDistance = x+y
var x1 = coordinate![0]
var y1 = coordinate![1]
var r1 = coordinate![2]
var x2 = coordinate![3]
var y2 = coordinate![4]
var r2 = coordinate![5]
if x1 == x2 && y1 == y2 && r1 == r2 {
print(-1)
}else if joAndRewDistance > (r1+r2)*(r1+r2){
print(0)
}else if joAndRewDistance < (r2-r1)*(r2-r1){
print(0)
}else if joAndRewDistance == (r2-r1)*(r2-r1){
print(1)
}else if joAndRewDistance == (r2+r1)*(r2+r1){
print(1)
}else{
print(2)
}
}