https://www.acmicpc.net/problem/1002
두 원의 외접, 내접, 한점에서 만나는 경우를 푸는 알고리즘. 문제만 이해하면 쉽게 풀 수 있다. 중학생때 배웠던것 같기도 하고..
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)
}
}
'Algorithm > 백준' 카테고리의 다른 글
백준 10870: 피보나치 수 5(Swift) (0) | 2021.09.10 |
---|---|
백준 10872번: 팩토리얼(Swift) (0) | 2021.09.05 |
백준 3053번: 택시기하학(Swift) (0) | 2021.09.03 |
백준 3009: 네 번째 점(Swift) (0) | 2021.09.01 |
백준 9020번: 골드바흐의 추측(Swift) (0) | 2021.08.29 |